iro/controller/user.py
branchdevel
changeset 96 883b25b0b760
parent 93 ee10253258ad
--- a/iro/controller/user.py	Tue Jan 10 06:04:35 2012 +0100
+++ b/iro/controller/user.py	Tue Jan 10 06:09:36 2012 +0100
@@ -1,7 +1,5 @@
-import logging
 import re
 
-from .database import WithSession
 from ..model import User
 
 from ..error import UserNotFound, InterfaceException, ValidateException
@@ -24,30 +22,31 @@
             
 
 @validate(userhash=rehash)
-def getuser(userhash):
-    with WithSession() as session:
-        user = session.query(User).filter_by(apikey=userhash).first()
-        if user is None:
-            raise UserNotFound()
-        else:
-            return user
+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):
         args=list(args)
-        logging.debug("Entering %s"%f.__name__)
         try:
-            kargs["user"]=getuser(userhash = kargs["apikey"])
+            userhash = kargs["apikey"]
             del kargs["apikey"]
         except KeyError:
             try:
-                kargs["user"]=getuser(userhash = args[1])
+                userhash = args[1]
+                del args[1]
             except IndexError:
                 raise InterfaceException() 
-            del args[1]
-        ret=f(*args,**kargs)
-        logging.debug("Exited %s"%f.__name__)
-        return ret
+        
+        def _gotResult(_user):
+            kargs["user"]=_user
+            return f(*args,**kargs)
+        return getuser(userhash=userhash).addCallback(_gotResult)
+
     new_f.__name__ = f.__name__
     return new_f