from inspect import getcallargs
from .schema import User
from .utils import DBDefer
from ..validate import vuserhash, validate
from ..error import UserNotFound, InterfaceException
dbdefer=DBDefer(None)
def setEngine(engine,autocommit=False):
dbdefer.engine = engine
dbdefer.autocommit = autocommit
@dbdefer
@validate(apikey=vuserhash)
def getuser(apikey, session):
user = session.query(User).filter_by(apikey=apikey).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:
apikey = kp["user"]
except KeyError:
raise InterfaceException()
def _gotResult(_user):
kp["user"]=_user
return f(**kp)
d=getuser(apikey=apikey)
return d.addCallback(_gotResult)
new_f.__name__ = f.__name__
return new_f