iro/model/user.py
branchdevel
changeset 106 d2992f011930
child 108 cadc01b2bdc0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/model/user.py	Sun Jan 22 12:26:00 2012 +0100
@@ -0,0 +1,31 @@
+from inspect import getcallargs
+
+from .schema import User
+from ..validate import vuserhash, validate
+from ..error import UserNotFound, InterfaceException
+
+@validate(userhash=vuserhash)
+def getuser(userhash, session):
+    user = session.query(User).filter_by(apikey=userhash).first()
+    if user is None:
+        raise UserNotFound()
+    else:
+        return user
+
+def with_user(f):
+    def new_f(*args,**kargs):
+        kp=getcallargs(f,*args,**kargs)
+        try:
+            userhash = kp["user"]
+        except KeyError:
+            raise InterfaceException() 
+        
+        def _gotResult(_user):
+            kp["user"]=_user
+            return f(**kp)
+        return getuser(userhash).addCallback(_gotResult)
+
+    new_f.__name__ = f.__name__
+    return new_f
+
+