iro/model/user.py
branchdevel
changeset 118 e16c0250c974
parent 117 351a02310dd8
child 125 19b3f383c9ce
equal deleted inserted replaced
117:351a02310dd8 118:e16c0250c974
       
     1 from twisted.internet import defer
     1 from inspect import getcallargs
     2 from inspect import getcallargs
     2 from decorator import decorator
     3 from decorator import decorator
     3 
     4 
     4 from .schema import User
     5 from .schema import User
     5 from .dbdefer import dbdefer
     6 from .dbdefer import dbdefer
     6 
     7 
     7 from ..validate import validate, vHash
     8 from ..validate import validate, vHash
     8 from ..error import UserNotFound, InterfaceException
     9 from ..error import UserNotFound, InterfaceException
     9 
    10 
    10 
    11 
       
    12 @validate(kwd="apikey", func=vHash, minlength=15, maxlength=15)
    11 @dbdefer
    13 @dbdefer
    12 @validate(kwd="apikey", func=vHash, minlength=15, maxlength=15)
       
    13 def getuser(apikey, session):
    14 def getuser(apikey, session):
    14     user = session.query(User).filter_by(apikey=apikey).first()
    15     user = session.query(User).filter_by(apikey=apikey).first()
    15     if user is None:
    16     if user is None:
    16         raise UserNotFound()
    17         raise UserNotFound()
    17     else:
    18     else:
    25     except KeyError:
    26     except KeyError:
    26         raise InterfaceException() 
    27         raise InterfaceException() 
    27     
    28     
    28     def _gotResult(_user):
    29     def _gotResult(_user):
    29         kp["user"]=_user
    30         kp["user"]=_user
    30         return f(**kp)
    31         e =  defer.maybeDeferred(f,**kp)
    31 
    32         return e
    32     d=getuser(apikey=apikey)
    33     d = defer.maybeDeferred(getuser, apikey=apikey)
    33     return d.addCallback(_gotResult)
    34     return d.addCallback(_gotResult)
    34 
    35 
    35 
    36