[Twisted-web] freeform and adbapi

Tommi Virtanen tv at twistedmatrix.com
Sat Apr 16 10:22:28 MDT 2005


Stephan Cieszynski wrote:
> class Username(annotate.Typed):
>     def coerce (self, val, configurable):
...
>         d = dbpool.runQuery("""SELECT username FROM userdb WHERE 
> username = %s""", str(val))
>         d.addCallback(_cb, val)
>         d.addErrback(_eb)
> 
>         return d

coerce cannot defer. To do that, move your validation into e.g. the
start of an autocallable and do something like

def foo(self, ctx, foo, bar):
     if not valid(foo):
         raise annotate.ValidateError(
             {'foo': 'Foo is bad.' },
             partialForm=ctx.locate(inevow.IRequest).args)
     ...
foo = annotate.autocallable(foo)

where the dict is variablename->errormessage. See ValidateError for
more.



More information about the Twisted-web mailing list