[Twisted-web] Freeform/formless doesn't work with deferred properties?

Donovan Preston twisted-web@twistedmatrix.com
Wed, 24 Dec 2003 10:38:49 -0500


On Dec 24, 2003, at 1:37 AM, Gavrie Philipson wrote:
>
> Christopher's workaround is fine, but doesn't solve the problem when 
> using freeform.configure to render the form instead of my own form 
> layout.

Yes. Supporting Deferred attribute values needs to happen.

> Anyway, I just did a 'cvs update' to get the latest HEAD, and guess 
> what? Now my test script doesn't work at all!
> When I run twistd -ony /tmp/formpost-defer.tac (the same script that I 
> previously posted to this list), I get a traceback (see below).
>
> Is this a bug? I did a clean install of the Quotient package and kept 
> no old files around.

This is not a bug. However, it arises because of the really, really bad 
semantics of __implements__. Basically, you subclassed Renderer and 
didn't declare that your subclass implemented the interfaces which 
Renderer declares it implements. This didn't matter before, so you 
didn't notice that there was a problem. Now it matters, and boom.

When declaring that a subclass implements some interfaces, don't forget 
to declare that it implements the super interfaces, too:

class Foo(Renderer):
	__implements__ = IBar, Renderer.__implements__

Someone, can we please please switch to the better semantics for 
declaring implementation used by either z3 now or PyProtocols?

dp