diff -r 4349f10d77a6 -r 883b25b0b760 iro/controller/user.py --- 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