--- a/iro/model/user.py Fri Jan 27 15:01:59 2012 +0100
+++ b/iro/model/user.py Fri Jan 27 17:49:57 2012 +0100
@@ -1,9 +1,9 @@
from inspect import getcallargs
-from functools import wraps
+from decorator import decorator
from .schema import User
from .utils import DBDefer
-from ..validate import vuserhash, validate
+from ..validate import validate, vHash
from ..error import UserNotFound, InterfaceException
dbdefer=DBDefer(None)
@@ -12,8 +12,9 @@
dbdefer.engine = engine
dbdefer.autocommit = autocommit
+
@dbdefer
-@validate(kwd="apikey", func=vuserhash)
+@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:
@@ -21,25 +22,19 @@
else:
return user
-def with_user(f):
- @wraps(f)
- def wrapper(*args,**kargs):
- kp=getcallargs(wrapper.original,*args,**kargs)
- try:
- apikey = kp["user"]
- except KeyError:
- raise InterfaceException()
-
- def _gotResult(_user):
- kp["user"]=_user
- return f(**kp)
+@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)
- try:
- wrapper.original=f.original
- except AttributeError:
- wrapper.original=f
- return wrapper
+ d=getuser(apikey=apikey)
+ return d.addCallback(_gotResult)