1 from inspect import getcallargs |
1 from inspect import getcallargs |
|
2 from functools import wraps |
2 |
3 |
3 from .schema import User |
4 from .schema import User |
4 from .utils import DBDefer |
5 from .utils import DBDefer |
5 from ..validate import vuserhash, validate |
6 from ..validate import vuserhash, validate |
6 from ..error import UserNotFound, InterfaceException |
7 from ..error import UserNotFound, InterfaceException |
|
8 |
7 dbdefer=DBDefer(None) |
9 dbdefer=DBDefer(None) |
8 |
10 |
9 def setEngine(engine,autocommit=False): |
11 def setEngine(engine,autocommit=False): |
10 dbdefer.engine = engine |
12 dbdefer.engine = engine |
11 dbdefer.autocommit = autocommit |
13 dbdefer.autocommit = autocommit |
12 |
14 |
13 @dbdefer |
15 @dbdefer |
14 @validate(apikey=vuserhash) |
16 @validate(kwd="apikey", func=vuserhash) |
15 def getuser(apikey, session): |
17 def getuser(apikey, session): |
16 user = session.query(User).filter_by(apikey=apikey).first() |
18 user = session.query(User).filter_by(apikey=apikey).first() |
17 if user is None: |
19 if user is None: |
18 raise UserNotFound() |
20 raise UserNotFound() |
19 else: |
21 else: |
20 return user |
22 return user |
21 |
23 |
22 def with_user(f): |
24 def with_user(f): |
23 def new_f(*args,**kargs): |
25 @wraps(f) |
24 kp=getcallargs(f,*args,**kargs) |
26 def wrapper(*args,**kargs): |
|
27 kp=getcallargs(wrapper.original,*args,**kargs) |
25 try: |
28 try: |
26 apikey = kp["user"] |
29 apikey = kp["user"] |
27 except KeyError: |
30 except KeyError: |
28 raise InterfaceException() |
31 raise InterfaceException() |
29 |
32 |