iro/validate.py
author Sandro Knauß <knauss@netzguerilla.net>
Mon, 30 Jan 2012 06:51:28 +0100
branchdevel
changeset 125 19b3f383c9ce
parent 118 e16c0250c974
child 126 1ac2439a68b5
permissions -rw-r--r--
getting job status form db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     1
import re
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
     2
from decorator import decorator
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
     3
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
     4
from twisted.internet import defer
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
     5
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
from inspect import getcallargs
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
from .error import ValidateException
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     8
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
     9
def vBool(value, field):
125
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 118
diff changeset
    10
    '''Validator for boolean values'''
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    11
    t=[True, 1, "true", "True", "TRUE"]
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    12
    f=[False, 0, "false", "False", "FALSE"]
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    13
    if value in t:
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    14
        return True
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    15
    elif value in f:
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    16
        return False
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    17
    else:
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    18
        raise ValidateException(field=field, msg='%s is not boolean' % field)
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    19
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    20
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    21
def vHash(value,field,minlength=None,maxlength=None):
125
19b3f383c9ce getting job status form db
Sandro Knauß <knauss@netzguerilla.net>
parents: 118
diff changeset
    22
    '''Validator for hash values'''
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    23
    if not re.match(r'^[a-f0-9]*$', value.lower()):
110
601fc908d9f1 exception handling for xmprpc
Sandro Knauß <knauss@netzguerilla.net>
parents: 109
diff changeset
    24
        raise ValidateException(field=field)
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    25
    if minlength and len(value)<minlength:
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    26
        raise ValidateException(field=field)
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    27
    if maxlength and len(value)>maxlength:
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    28
        raise ValidateException(field=field)
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    29
    return value
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    30
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    31
def vTel(value,field):
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    32
    return value
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    33
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    34
def vEmail(value, field):
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    35
    return value
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    36
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    37
def validate(kwd,func, need=True,*args,**kargs):
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    38
    '''validate decorator
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    39
    use it like this:
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    40
        @validate(kwd=userhash, func=vuserhash)
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    41
        f(userhash)
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    42
    that will validate usrhash with the function vuserhash.
109
935b5fcaf152 little typos
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    43
    Every validate function should raise an Exception, if the the value is not valid'''
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    44
    @decorator
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    45
    def v(f,*a,**k):
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    46
        kp=getcallargs(f,*a,**k)
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    47
        def dfunc(*x,**y):
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    48
            return None
114
1ed072cc6793 reconstructing validate decorator
Sandro Knauß <knauss@netzguerilla.net>
parents: 110
diff changeset
    49
        try:
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    50
            if need or kp[kwd] is not None:
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    51
                dfunc=func
115
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    52
        except KeyError:
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    53
            if need:
323d06431100 restructering validate
Sandro Knauß <knauss@netzguerilla.net>
parents: 114
diff changeset
    54
                raise ValidateException(field=kwd,msg="%s is nessasary"%kwd)
118
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    55
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    56
        def _gotResult(value):
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    57
            kp[kwd] = value
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    58
            e = defer.maybeDeferred(f,**kp)
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    59
            return e
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    60
        d = defer.maybeDeferred(dfunc, kp[kwd],kwd,*args,**kargs)
e16c0250c974 validate decorator can handle deferd validators
Sandro Knauß <knauss@netzguerilla.net>
parents: 115
diff changeset
    61
        return d.addCallback(_gotResult)
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    62
    return v
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    63