iro/model/decorators.py
branchdevel
changeset 210 3763babd5e10
parent 209 7a0f8fbdf7b8
child 212 39e4c09e1b60
equal deleted inserted replaced
209:7a0f8fbdf7b8 210:3763babd5e10
     6 from .dbdefer import  dbdefer
     6 from .dbdefer import  dbdefer
     7 from .pool import runInDBPool
     7 from .pool import runInDBPool
     8 
     8 
     9 from ..error import ValidateException
     9 from ..error import ValidateException
    10 
    10 
    11 def vRoute(typ):
    11 @dbdefer
    12     @dbdefer
    12 def vRoute(session, value, field, typ, allowString=True, allowList=True):
    13     def wrapper(session, value, field, allowString=True, allowList=True):
    13     str_ = False
    14         str_ = False
    14     ret = []
    15         ret = []
       
    16 
    15 
    17         if type(value) is types.StringType:
    16     if type(value) is types.StringType:
    18             if not allowString:
    17         if not allowString:
    19                 raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
    18             raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
    20             str_=True
    19         str_=True
    21             value=[value]
    20         value=[value]
    22         elif not allowList:
    21     elif not allowList:
    23             raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
    22         raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
    24 
    23 
    25         routes =[o.name for o in Offer.routes(session,typ)]
    24     routes =[o.name for o in Offer.routes(session,typ)]
    26         for v in value:
    25     for v in value:
    27             if v not in routes:
    26         if v not in routes:
    28                 raise ValidateException(field=field,msg='Route %s is not valid.'%v)
    27             raise ValidateException(field=field,msg='Route %s is not valid.'%v)
    29             if v not in ret:
    28         if v not in ret:
    30                 ret.append(v)
    29             ret.append(v)
    31         if str_:
    30     if str_:
    32             return ret[0]
    31         return ret[0]
    33         return ret
    32     return ret
    34     return wrapper
       
    35 
    33 
    36 @dbdefer
    34 @dbdefer
    37 def vTyp(value,field, session):
    35 def vTyp(value,field, session):
    38     for typ in Offer.typs(session):
    36     for typ in Offer.typs(session):
    39         if value == typ[0]:
    37         if value == typ[0]: