Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Fri, 30 Dec 2011 01:34:20 +0000 (02:34 +0100)
committerFredrik Tolf <fredrik@dolda2000.com>
Fri, 30 Dec 2011 01:34:20 +0000 (02:34 +0100)
Conflicts:
wrw/__init__.py
wrw/util.py

1  2 
wrw/__init__.py
wrw/util.py

diff --combined wrw/__init__.py
@@@ -1,6 -1,6 +1,6 @@@
  __all__ = ["wsgiwrap", "restart", "cookie", "formdata"]
  
- from .util import wsgiwrap, persession, sessiondata
 -from util import wsgiwrap, formparams, persession, sessiondata, autodirty, manudirty
 -from dispatch import restart
 -import cookie
 -from form import formdata
++from .util import wsgiwrap, formparams, persession, sessiondata, autodirty, manudirty
 +from .dispatch import restart
 +from . import cookie
 +from .form import formdata
diff --combined wrw/util.py
@@@ -1,10 -1,24 +1,24 @@@
- from . import req, dispatch, session
+ import inspect
 -import req, dispatch, session, form
++from . import req, dispatch, session, form
  
  def wsgiwrap(callable):
      def wrapper(env, startreq):
          return dispatch.handle(req.origrequest(env), startreq, callable)
      return wrapper
  
+ 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
  def persession(data = None):
      def dec(callable):
          def wrapper(req):
@@@ -39,7 -53,7 +53,7 @@@ class sessiondata(object)
  class autodirty(sessiondata):
      @classmethod
      def get(cls, req):
 -        ret = super(autodirty, cls).get(req)
 +        ret = super().get(req)
          if "_is_dirty" not in ret.__dict__:
              ret.__dict__["_is_dirty"] = False
          return ret
          return self._is_dirty
  
      def __setattr__(self, name, value):
 -        super(autodirty, self).__setattr__(name, value)
 +        super().__setattr__(name, value)
          if "_is_dirty" in self.__dict__:
              self.__dict__["_is_dirty"] = True
  
      def __delattr__(self, name):
 -        super(autodirty, self).__delattr__(name, value)
 +        super().__delattr__(name, value)
          if "_is_dirty" in self.__dict__:
              self.__dict__["_is_dirty"] = True
  
  class manudirty(object):
      def __init__(self, *args, **kwargs):
 -        super(manudirty, self).__init__(*args, **kwargs)
 +        super().__init__(*args, **kwargs)
          self.__dirty = False
  
      def sessfrozen(self):