iro/model/user.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 27 Jan 2012 17:49:57 +0100
branchdevel
changeset 115 323d06431100
parent 114 1ed072cc6793
child 117 351a02310dd8
permissions -rw-r--r--
restructering validate

from inspect import getcallargs
from decorator import decorator

from .schema import User
from .utils import DBDefer
from ..validate import validate, vHash
from ..error import UserNotFound, InterfaceException

dbdefer=DBDefer(None)

def setEngine(engine,autocommit=False): 
    dbdefer.engine = engine
    dbdefer.autocommit = autocommit


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

    d=getuser(apikey=apikey)
    return d.addCallback(_gotResult)