[Zope-dev] Rendering of objects in DTML

Leonardo Rochael Almeida leo@hiper.com.br
14 Jan 2003 14:52:27 -0200


On Tue, 2003-01-14 at 01:01, Bjorn Stabell wrote:
> > Bjorn Stabell wrote:
> 
> I would like
> 
>   <dtml-var content>
>   <dtml-with content>...
>   <dtml-if content>
> 
> to call different functions.  The first renders the object, the second
> returns a mapping of the content's attributes/properties, the third
> checks for "trueness" of the content.  Rendering a content could be an
> expensive operation and I don't want to do it when doing dtml-with and
> dtml-if.


you can do that by having your object be non-callable (or returning self
on __call__) and implementing __str__ where you can have access to the
REQUEST thru self.REQUEST. <dtml-with content> works as expected because
you're getting the object itself. To make <dtml-if content> work you
should implement __len__ (if your object implements sequence or mapping,
which it probably doesn't) or __nonzero__. Read the python docs for
details on the implementation of these methods.

	Cheers, Leo

-- 
Ideas don't stay in some minds very long because they don't like
solitary confinement.