refactoring vRoute devel
authorSandro Knauß <knauss@netzguerilla.net>
Fri, 02 Mar 2012 13:46:13 +0100
branchdevel
changeset 210 3763babd5e10
parent 209 7a0f8fbdf7b8
child 211 3fc1f400c107
refactoring vRoute
iro/controller/viewinterface.py
iro/model/decorators.py
tests/model_validate.py
--- a/iro/controller/viewinterface.py	Fri Mar 02 03:25:21 2012 +0100
+++ b/iro/controller/viewinterface.py	Fri Mar 02 13:46:13 2012 +0100
@@ -41,7 +41,7 @@
    
     @validate(kwd="recipients",func=vTel)
     @vUser
-    @validate(kwd="route",func=vRoute(typ="sms"))
+    @validate(kwd="route", func=vRoute, typ="sms")
     def sms(self, user, message, recipients, route="default", info=""):
         '''Versendet eine SMS.
 
@@ -64,7 +64,7 @@
    
     @validate(kwd="recipients",func=vTel)
     @vUser
-    @validate(kwd="route",func=vRoute(typ="fax"))
+    @validate(kwd="route",func=vRoute, typ="fax")
     def fax(self, user, subject, fax, recipients, route="default", info=""):
         '''Versendet ein FAX.
 
@@ -89,7 +89,7 @@
     @validate(kwd="recipients",func=vEmail, allowString=False)
     @validate(kwd="frm",func=vEmail, need=False, allowList=False)
     @vUser
-    @validate(kwd="route",func=vRoute(typ="mail"))
+    @validate(kwd="route",func=vRoute, typ="mail")
     def mail(self, user, subject, body, recipients, frm=None, route="default", info=""):
         '''Versendet eine Email.
 
--- a/iro/model/decorators.py	Fri Mar 02 03:25:21 2012 +0100
+++ b/iro/model/decorators.py	Fri Mar 02 13:46:13 2012 +0100
@@ -8,30 +8,28 @@
 
 from ..error import ValidateException
 
-def vRoute(typ):
-    @dbdefer
-    def wrapper(session, value, field, allowString=True, allowList=True):
-        str_ = False
-        ret = []
+@dbdefer
+def vRoute(session, value, field, typ, allowString=True, allowList=True):
+    str_ = False
+    ret = []
 
-        if type(value) is types.StringType:
-            if not allowString:
-                raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
-            str_=True
-            value=[value]
-        elif not allowList:
-            raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
+    if type(value) is types.StringType:
+        if not allowString:
+            raise ValidateException(field=field,msg='%s must be a list of routes.'%field)
+        str_=True
+        value=[value]
+    elif not allowList:
+        raise ValidateException(field=field,msg='%s must be a route - No list of routes.'%field)
 
-        routes =[o.name for o in Offer.routes(session,typ)]
-        for v in value:
-            if v not in routes:
-                raise ValidateException(field=field,msg='Route %s is not valid.'%v)
-            if v not in ret:
-                ret.append(v)
-        if str_:
-            return ret[0]
-        return ret
-    return wrapper
+    routes =[o.name for o in Offer.routes(session,typ)]
+    for v in value:
+        if v not in routes:
+            raise ValidateException(field=field,msg='Route %s is not valid.'%v)
+        if v not in ret:
+            ret.append(v)
+    if str_:
+        return ret[0]
+    return ret
 
 @dbdefer
 def vTyp(value,field, session):
--- a/tests/model_validate.py	Fri Mar 02 03:25:21 2012 +0100
+++ b/tests/model_validate.py	Fri Mar 02 13:46:13 2012 +0100
@@ -34,18 +34,16 @@
     def testRoute(self):
         with self.session() as session:
             session.add(Offer(name="t",provider="p",typ="type"))
-        vR = vRoute('type')
-        self.assertEqual(vR("t",None),"t")
-        self.assertEqual(vR(["t","t"],None),["t"])
-        e = self.assertRaises(ValidateException,vR, "s", None)
+        self.assertEqual(vRoute("t",None,typ="type"),"t")
+        self.assertEqual(vRoute(["t","t"],None,typ="type"),["t"])
+        e = self.assertRaises(ValidateException,vRoute, "s", None, typ="type")
         self.assertEqual(str(e),'700:Route s is not valid.')
 
     def testRouteAllow(self):
         with self.session() as session:
             session.add(Offer(name="t",provider="p",typ="type"))
-        vR = vRoute('type')
-        e = self.assertRaises(ValidateException,vR, "t", "foo", allowString=False)
+        e = self.assertRaises(ValidateException,vRoute, "t", "foo", typ="type", allowString=False)
         self.assertEqual(str(e),'700:foo must be a list of routes.')
-        e = self.assertRaises(ValidateException,vR, ["t"], "foo", allowList=False)
+        e = self.assertRaises(ValidateException,vRoute, ["t"], "foo", typ="type", allowList=False)
         self.assertEqual(str(e),'700:foo must be a route - No list of routes.')