--- 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