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