--- a/iro/validate.py Fri Jan 27 21:21:41 2012 +0100
+++ b/iro/validate.py Sat Jan 28 04:00:47 2012 +0100
@@ -1,6 +1,8 @@
import re
from decorator import decorator
+from twisted.internet import defer
+
from inspect import getcallargs
from .error import ValidateException
@@ -40,14 +42,20 @@
@decorator
def v(f,*a,**k):
kp=getcallargs(f,*a,**k)
+ def dfunc(*x,**y):
+ return None
try:
if need or kp[kwd] is not None:
- kp[kwd] = func(kp[kwd],kwd,*args,**kargs)
- else:
- kp[kwd] = None
+ dfunc=func
except KeyError:
if need:
raise ValidateException(field=kwd,msg="%s is nessasary"%kwd)
- return f(**kp)
+
+ def _gotResult(value):
+ kp[kwd] = value
+ e = defer.maybeDeferred(f,**kp)
+ return e
+ d = defer.maybeDeferred(dfunc, kp[kwd],kwd,*args,**kargs)
+ return d.addCallback(_gotResult)
return v