--- a/iro/model/decorators.py Thu Mar 01 21:00:31 2012 +0100
+++ b/iro/model/decorators.py Fri Mar 02 02:50:17 2012 +0100
@@ -1,15 +1,36 @@
+import types
from decorator import decorator
from .user import vUser
+from .schema import Offer
from .dbdefer import dbdefer
from .pool import runInDBPool
from ..error import ValidateException
def vRoute(typ):
- @decorator
- def wrapper(f, *args, **kwargs):
- return f(*args, **kwargs)
+ @dbdefer
+ def wrapper(session, value, field, allowString=True, allowList=True):
+ str_ = False
+ ret = []
+
+ if type(value) is types.StringType:
+ if not allowString:
+ raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
+ str_=True
+ value=[value]
+ elif not allowList:
+ raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
+
+ routes =[o.name for o in Offer.routes(session,typ)]
+ for v in value:
+ if v not in routes:
+ raise ValidateException(field=field,msg='Route %s is not valid.'%v)
+ if v not in ret:
+ ret.append(v)
+ if str_:
+ return ret[0]
+ return ret
return wrapper
@dbdefer