Quote some more URL characters
[wrw.git] / wrw / util.py
index 759c295..4fad6e9 100644 (file)
@@ -8,16 +8,16 @@ def wsgiwrap(callable):
     return wrapper
 
 def formparams(callable):
+    spec = inspect.getargspec(callable)
     def wrapper(req):
         data = form.formdata(req)
-        spec = inspect.getargspec(callable)
         args = dict(data.items())
         args["req"] = req
         if not spec.keywords:
             for arg in list(args):
                 if arg not in spec.args:
                     del args[arg]
-        for i in xrange(len(spec.args) - len(spec.defaults)):
+        for i in xrange(len(spec.args) - (len(spec.defaults) if spec.defaults else 0)):
             if spec.args[i] not in args:
                 raise resp.httperror(400, "Missing parameter", ("The query parameter `", resp.h.code(spec.args[i]), "' is required but not supplied."))
         return callable(**args)