+def stringwrap(charset):
+ def dec(callable):
+ def wrapper(*args, **kwargs):
+ bk = callable(*args, **kwargs)
+ for string in bk:
+ yield string.encode(charset)
+ return wrapper
+ return dec
+
+def formparams(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]
+ return callable(**args)
+ return wrapper
+