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