iro/model/user.py
author Sandro Knauß <knauss@netzguerilla.net>
Sun, 22 Jan 2012 12:26:00 +0100
branchdevel
changeset 106 d2992f011930
child 108 cadc01b2bdc0
permissions -rw-r--r--
controller/user moved to model seperate validation into own module

from inspect import getcallargs

from .schema import User
from ..validate import vuserhash, validate
from ..error import UserNotFound, InterfaceException

@validate(userhash=vuserhash)
def getuser(userhash, session):
    user = session.query(User).filter_by(apikey=userhash).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:
            userhash = kp["user"]
        except KeyError:
            raise InterfaceException() 
        
        def _gotResult(_user):
            kp["user"]=_user
            return f(**kp)
        return getuser(userhash).addCallback(_gotResult)

    new_f.__name__ = f.__name__
    return new_f