[Twisted-Python] Woven Model extreme pain

Syver Enstad syver at inout.no
Mon Oct 6 02:07:25 MDT 2003


Bill Gribble <grib at billgribble.com> writes:

> On Fri, 2003-10-03 at 03:32, Syver Enstad wrote:
> > <span model="foo" view="Widget">
> >   <span model="0" view="Text"></span>
> > </span>
> > 
> > should work because the Widget handles the deferred model and
> > postpones processing of child nodes until the deferred result is
> > ready.
> 
> Could you elaborate on this a little?  I want to do this too (defer
> rendering in Woven) and I use Widget subclasses everywhere.   At what
> point is it OK to produce a Deferred?  

As the return value from a wmfactory_method and as Donovan mentions
that implies also as the return value from getData but I haven't done
that explicitly.

Example:

...MyPage...
def wmfactory_myList(self, request):
    deferred = defer.Deferred()
    reactor.callLater(2, deferred.callback, [1, 2, 3])
    return deferred

<span model="myList" view="Widget">
  <span model="0" view="Text"></span>
  <span model="1" view="Text"></span>
  <span model="2" view="Text"></span>
</span>

Or with a List widget

<span model="myList" view="List">
  <span pattern="listItem" view="Text"></span>
</span>



> The only method I override in my Widget subclasses is setUp.   In my
> top-level Page subclass I have a single wvfactory_ method for a special
> View I use, and a getDynamicChild to fetch children (in this case, all
> the children are dynamic).

Then I think you will be home free, because you don't override
generate.

> Are you suggesting that I return a Deferred instead of a View from the
> wvfactory_ method?  Or that I return a Deferred from the getDynamicChild
> method?  Or what? 

None of the above, what I tried to explain was that Widget.generate
handles deferred models. I don't think there is any support for
deferred page's or views, just models. This means that if you need
deferreds you have to use a model for that. This makes sense because
you should not put data in your view classes, because then they are
not views anymore.





More information about the Twisted-Python mailing list