iro/model/user.py
branchdevel
changeset 106 d2992f011930
child 108 cadc01b2bdc0
equal deleted inserted replaced
105:48f2b8adc7da 106:d2992f011930
       
     1 from inspect import getcallargs
       
     2 
       
     3 from .schema import User
       
     4 from ..validate import vuserhash, validate
       
     5 from ..error import UserNotFound, InterfaceException
       
     6 
       
     7 @validate(userhash=vuserhash)
       
     8 def getuser(userhash, session):
       
     9     user = session.query(User).filter_by(apikey=userhash).first()
       
    10     if user is None:
       
    11         raise UserNotFound()
       
    12     else:
       
    13         return user
       
    14 
       
    15 def with_user(f):
       
    16     def new_f(*args,**kargs):
       
    17         kp=getcallargs(f,*args,**kargs)
       
    18         try:
       
    19             userhash = kp["user"]
       
    20         except KeyError:
       
    21             raise InterfaceException() 
       
    22         
       
    23         def _gotResult(_user):
       
    24             kp["user"]=_user
       
    25             return f(**kp)
       
    26         return getuser(userhash).addCallback(_gotResult)
       
    27 
       
    28     new_f.__name__ = f.__name__
       
    29     return new_f
       
    30 
       
    31