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
@dbdefer
def vRoute(session, value, field, typ, 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
@dbdefer
def vTyp(value,field, session):
for typ in Offer.typs(session):
if value == typ[0]:
break
else:
raise ValidateException(field=field,msg='Typ %s is not valid.'%value)
return value