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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
from inspect import getcallargs
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
from .schema import User
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from ..validate import vuserhash, validate
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     5
from ..error import UserNotFound, InterfaceException
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
@validate(userhash=vuserhash)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
def getuser(userhash, session):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
    user = session.query(User).filter_by(apikey=userhash).first()
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
    if user is None:
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
        raise UserNotFound()
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
    else:
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
        return user
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
def with_user(f):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
    def new_f(*args,**kargs):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    17
        kp=getcallargs(f,*args,**kargs)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
        try:
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
            userhash = kp["user"]
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
        except KeyError:
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
            raise InterfaceException() 
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    22
        
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
        def _gotResult(_user):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
            kp["user"]=_user
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
            return f(**kp)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
        return getuser(userhash).addCallback(_gotResult)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    28
    new_f.__name__ = f.__name__
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    29
    return new_f
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    31