--- /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
+
+