iro/model/user.py
branchdevel
changeset 114 1ed072cc6793
parent 111 8b493ab9c74f
child 115 323d06431100
--- a/iro/model/user.py	Thu Jan 26 01:23:04 2012 +0100
+++ b/iro/model/user.py	Fri Jan 27 15:01:59 2012 +0100
@@ -1,9 +1,11 @@
 from inspect import getcallargs
+from functools import wraps
 
 from .schema import User
 from .utils import DBDefer
 from ..validate import vuserhash, validate
 from ..error import UserNotFound, InterfaceException
+
 dbdefer=DBDefer(None)
 
 def setEngine(engine,autocommit=False): 
@@ -11,7 +13,7 @@
     dbdefer.autocommit = autocommit
 
 @dbdefer
-@validate(apikey=vuserhash)
+@validate(kwd="apikey", func=vuserhash)
 def getuser(apikey, session):
     user = session.query(User).filter_by(apikey=apikey).first()
     if user is None:
@@ -20,8 +22,9 @@
         return user
 
 def with_user(f):
-    def new_f(*args,**kargs):
-        kp=getcallargs(f,*args,**kargs)
+    @wraps(f)
+    def wrapper(*args,**kargs):
+        kp=getcallargs(wrapper.original,*args,**kargs)
         try:
             apikey = kp["user"]
         except KeyError:
@@ -33,8 +36,10 @@
 
         d=getuser(apikey=apikey)
         return d.addCallback(_gotResult)
-
-    new_f.__name__ = f.__name__
-    return new_f
+    try:
+        wrapper.original=f.original
+    except AttributeError:
+        wrapper.original=f
+    return wrapper