iro/model/decorators.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 02 Mar 2012 13:46:13 +0100
branchdevel
changeset 210 3763babd5e10
parent 209 7a0f8fbdf7b8
child 212 39e4c09e1b60
permissions -rw-r--r--
refactoring vRoute
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     1
import types
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
from decorator import decorator
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
from .user import vUser
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
     5
from .schema import Offer
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
     6
from .dbdefer import  dbdefer
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
     7
from .pool import runInDBPool
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
     8
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
     9
from ..error import ValidateException
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
210
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    11
@dbdefer
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    12
def vRoute(session, value, field, typ, allowString=True, allowList=True):
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    13
    str_ = False
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    14
    ret = []
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    15
210
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    16
    if type(value) is types.StringType:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    17
        if not allowString:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    18
            raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    19
        str_=True
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    20
        value=[value]
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    21
    elif not allowList:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    22
        raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    23
210
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    24
    routes =[o.name for o in Offer.routes(session,typ)]
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    25
    for v in value:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    26
        if v not in routes:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    27
            raise ValidateException(field=field,msg='Route %s is not valid.'%v)
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    28
        if v not in ret:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    29
            ret.append(v)
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    30
    if str_:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    31
        return ret[0]
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    32
    return ret
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    33
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    34
@dbdefer
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    35
def vTyp(value,field, session):
208
5da0f00ef872 session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents: 205
diff changeset
    36
    for typ in Offer.typs(session):
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    37
        if value == typ[0]:
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    38
            break
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    39
    else:
209
7a0f8fbdf7b8 adding tests for vTyp
Sandro Knauß <knauss@netzguerilla.net>
parents: 208
diff changeset
    40
        raise ValidateException(field=field,msg='Typ %s is not valid.'%value)
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    41
    return value