2 |
2 |
3 from .schema import User |
3 from .schema import User |
4 from .utils import DBDefer |
4 from .utils import DBDefer |
5 from ..validate import vuserhash, validate |
5 from ..validate import vuserhash, validate |
6 from ..error import UserNotFound, InterfaceException |
6 from ..error import UserNotFound, InterfaceException |
7 |
|
8 |
|
9 dbdefer=DBDefer(None) |
7 dbdefer=DBDefer(None) |
10 |
8 |
11 def setEngine(engine,autocommit=False): |
9 def setEngine(engine,autocommit=False): |
12 dbdefer.engine = engine |
10 dbdefer.engine = engine |
13 dbdefer.autocommit = autocommit |
11 dbdefer.autocommit = autocommit |
14 |
12 |
15 @dbdefer |
13 @dbdefer |
16 @validate(userhash=vuserhash) |
14 @validate(apikey=vuserhash) |
17 def getuser(userhash, session): |
15 def getuser(apikey, session): |
18 user = session.query(User).filter_by(apikey=userhash).first() |
16 user = session.query(User).filter_by(apikey=apikey).first() |
19 if user is None: |
17 if user is None: |
20 raise UserNotFound() |
18 raise UserNotFound() |
21 else: |
19 else: |
22 return user |
20 return user |
23 |
21 |
24 def with_user(f): |
22 def with_user(f): |
25 def new_f(*args,**kargs): |
23 def new_f(*args,**kargs): |
26 kp=getcallargs(f,*args,**kargs) |
24 kp=getcallargs(f,*args,**kargs) |
27 try: |
25 try: |
28 userhash = kp["user"] |
26 apikey = kp["user"] |
29 except KeyError: |
27 except KeyError: |
30 raise InterfaceException() |
28 raise InterfaceException() |
31 |
29 |
32 def _gotResult(_user): |
30 def _gotResult(_user): |
33 kp["user"]=_user |
31 kp["user"]=_user |
34 return f(**kp) |
32 return f(**kp) |
35 return getuser(userhash).addCallback(_gotResult) |
33 |
|
34 d=getuser(apikey=apikey) |
|
35 return d.addCallback(_gotResult) |
36 |
36 |
37 new_f.__name__ = f.__name__ |
37 new_f.__name__ = f.__name__ |
38 return new_f |
38 return new_f |
39 |
39 |
40 |
40 |