iro/model/decorators.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 02 Mar 2012 14:00:23 +0100
branchdevel
changeset 212 39e4c09e1b60
parent 210 3763babd5e10
child 258 0a5eb5aac0be
permissions -rw-r--r--
adding tests for vRoute with default and provider names
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
212
39e4c09e1b60 adding tests for vRoute with default and provider names
Sandro Knauß <knauss@netzguerilla.net>
parents: 210
diff changeset
    24
    routes = [o.name for o in Offer.routes(session,typ)]
39e4c09e1b60 adding tests for vRoute with default and provider names
Sandro Knauß <knauss@netzguerilla.net>
parents: 210
diff changeset
    25
    providers =  [o.provider for o in Offer.providers(session,typ)]
210
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    26
    for v in value:
212
39e4c09e1b60 adding tests for vRoute with default and provider names
Sandro Knauß <knauss@netzguerilla.net>
parents: 210
diff changeset
    27
        if v not in routes and v not in providers and v != "default":
210
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    28
            raise ValidateException(field=field,msg='Route %s is not valid.'%v)
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    29
        if v not in ret:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    30
            ret.append(v)
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    31
    if str_:
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    32
        return ret[0]
3763babd5e10 refactoring vRoute
Sandro Knauß <knauss@netzguerilla.net>
parents: 209
diff changeset
    33
    return ret
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    34
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    35
@dbdefer
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    36
def vTyp(value,field, session):
208
5da0f00ef872 session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents: 205
diff changeset
    37
    for typ in Offer.typs(session):
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    38
        if value == typ[0]:
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    39
            break
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    40
    else:
209
7a0f8fbdf7b8 adding tests for vTyp
Sandro Knauß <knauss@netzguerilla.net>
parents: 208
diff changeset
    41
        raise ValidateException(field=field,msg='Typ %s is not valid.'%value)
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    42
    return value