iro/model/user.py
author Sandro Knauß <knauss@netzguerilla.net>
Mon, 27 Feb 2012 22:21:22 +0100
branchdevel
changeset 193 e5ec4bfa4929
parent 125 19b3f383c9ce
child 263 52284710c0b4
permissions -rw-r--r--
adding allowString and allowList to vEmail to make sure, if a list is allowd or a string.

from twisted.internet import defer
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


@validate(kwd="apikey", func=vHash, minlength=15, maxlength=15)
@dbdefer
def getuser(session, apikey):
    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
        e =  defer.maybeDeferred(f,**kp)
        return e
    d = defer.maybeDeferred(getuser, apikey=apikey)
    return d.addCallback(_gotResult)