iro/model/decorators.py
author Sandro Knauß <knauss@netzguerilla.net>
Fri, 02 Mar 2012 03:14:01 +0100
branchdevel
changeset 208 5da0f00ef872
parent 205 02ae72e8bab9
child 209 7a0f8fbdf7b8
permissions -rw-r--r--
session.typs -> Offer.typs
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
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
def vRoute(typ):
205
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    12
    @dbdefer
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    13
    def wrapper(session, value, field, allowString=True, allowList=True):
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    14
        str_ = False
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    15
        ret = []
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    16
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    17
        if type(value) is types.StringType:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    18
            if not allowString:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    19
                raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    20
            str_=True
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    21
            value=[value]
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    22
        elif not allowList:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    23
            raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    24
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    25
        routes =[o.name for o in Offer.routes(session,typ)]
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    26
        for v in value:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    27
            if v not in routes:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    28
                raise ValidateException(field=field,msg='Route %s is not valid.'%v)
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    29
            if v not in ret:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    30
                ret.append(v)
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    31
        if str_:
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    32
            return ret[0]
02ae72e8bab9 implementing vRoutes
Sandro Knauß <knauss@netzguerilla.net>
parents: 122
diff changeset
    33
        return ret
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    34
    return wrapper
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    35
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    36
@dbdefer
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    37
def vTyp(value,field, session):
208
5da0f00ef872 session.typs -> Offer.typs
Sandro Knauß <knauss@netzguerilla.net>
parents: 205
diff changeset
    38
    for typ in Offer.typs(session):
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    39
        if value == typ[0]:
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    40
            break
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    41
    else:
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 117
diff changeset
    42
        raise ValidateException(field=field,msg='Typ is not valid.')
117
351a02310dd8 model restructuring
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    43
    return value