|
1 import types |
1 from decorator import decorator |
2 from decorator import decorator |
2 |
3 |
3 from .user import vUser |
4 from .user import vUser |
|
5 from .schema import Offer |
4 from .dbdefer import dbdefer |
6 from .dbdefer import dbdefer |
5 from .pool import runInDBPool |
7 from .pool import runInDBPool |
6 |
8 |
7 from ..error import ValidateException |
9 from ..error import ValidateException |
8 |
10 |
9 def vRoute(typ): |
11 def vRoute(typ): |
10 @decorator |
12 @dbdefer |
11 def wrapper(f, *args, **kwargs): |
13 def wrapper(session, value, field, allowString=True, allowList=True): |
12 return f(*args, **kwargs) |
14 str_ = False |
|
15 ret = [] |
|
16 |
|
17 if type(value) is types.StringType: |
|
18 if not allowString: |
|
19 raise ValidateException(field=field,msg='%s must be a list of routes.'%field) |
|
20 str_=True |
|
21 value=[value] |
|
22 elif not allowList: |
|
23 raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field) |
|
24 |
|
25 routes =[o.name for o in Offer.routes(session,typ)] |
|
26 for v in value: |
|
27 if v not in routes: |
|
28 raise ValidateException(field=field,msg='Route %s is not valid.'%v) |
|
29 if v not in ret: |
|
30 ret.append(v) |
|
31 if str_: |
|
32 return ret[0] |
|
33 return ret |
13 return wrapper |
34 return wrapper |
14 |
35 |
15 @dbdefer |
36 @dbdefer |
16 def vTyp(value,field, session): |
37 def vTyp(value,field, session): |
17 for typ in session.typs: |
38 for typ in session.typs: |