iro/validate.py
author Sandro Knauß <knauss@netzguerilla.net>
Thu, 26 Jan 2012 01:18:47 +0100
branchdevel
changeset 110 601fc908d9f1
parent 109 935b5fcaf152
child 114 1ed072cc6793
permissions -rw-r--r--
exception handling for xmprpc better exception msg fpr velidate Exceptions
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
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     2
from inspect import getcallargs
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     3
from .error import ValidateException
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     4
110
601fc908d9f1 exception handling for xmprpc
Sandro Knauß <knauss@netzguerilla.net>
parents: 109
diff changeset
     5
def vuserhash(hash,field):
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     6
    '''vailidate function for userhash'''
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     7
    if not re.match(r'^[a-f0-9]{15,}$', hash.lower()):
110
601fc908d9f1 exception handling for xmprpc
Sandro Knauß <knauss@netzguerilla.net>
parents: 109
diff changeset
     8
        raise ValidateException(field=field)
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
     9
    return True
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    10
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    11
def validate(**kargs):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    12
    '''validate decorator
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    13
    use it like this:
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    14
        @validate(userhash=vuserhash)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    15
        f(userhash)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    16
    that will validate usrhah with the function vuserhash.
109
935b5fcaf152 little typos
Sandro Knauß <knauss@netzguerilla.net>
parents: 106
diff changeset
    17
    Every validate function should raise an Exception, if the the value is not valid'''
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    18
    def v(f):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    19
        def new_f(*a,**k):
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    20
            kp=getcallargs(f,*a,**k)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    21
            for i in kargs:
110
601fc908d9f1 exception handling for xmprpc
Sandro Knauß <knauss@netzguerilla.net>
parents: 109
diff changeset
    22
                kargs[i](kp[i],i)
106
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    23
            return f(*a,**k)
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    24
        new_f.__name__ = f.__name__
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    25
        return new_f
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    26
    return v
d2992f011930 controller/user moved to model
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    27