from inspect import getcallargs
from decorator import decorator
from .schema import User
from .dbdefer import dbdefer
from ..validate import validate, vHash
from ..error import UserNotFound, InterfaceException
@dbdefer
@validate(kwd="apikey", func=vHash, minlength=15, maxlength=15)
def getuser(apikey, session):
user = session.query(User).filter_by(apikey=apikey).first()
if user is None:
raise UserNotFound()
else:
return user
@decorator
def vUser(f,*args,**kargs):
kp=getcallargs(f,*args,**kargs)
try:
apikey = kp["user"]
except KeyError:
raise InterfaceException()
def _gotResult(_user):
kp["user"]=_user
return f(**kp)
d=getuser(apikey=apikey)
return d.addCallback(_gotResult)