[Zope] dtml-with and only
Michel Pelletier
michel@digicool.com
Wed, 03 Nov 1999 19:47:18 -0500
Barry A. Warsaw wrote:
>
> Thanks for the suggestion and explanation guys. Just to follow up,
> Michel's suggestion to use <dtml-with aq_explicit> to turn off
> acquisition did not work. Loren's suggestion to test on
> "hasProperty('nickname')" did the trick nicely. For completeness,
> here's the DTML for my current Breadcrumbs DTML method.
Oh did I say <dtml-with aq_explicit>? ;)
My bad, this was my wrong suggestion:
<dtml-with obj only>
<dtml-with aq_explicit>
<dtml-if nickname>
...
The problem here is that the Nspace stack is masked and obj is pushed on
to it. Then, aq_explicit is pushed on top of that, when a lookup for
'nickname' fails in aq_explicit, it drops down to the next object on the
stack, which is obj, which *is* an implicit acquirer, so it does find
nickname, which is why it doesn't work.
What I really meant to say was:
<dtml-if "_.hasattr(aq_explicit, 'nickname')">
<dtml-var nickname>
<dtml-else>
<dtml-var title_or_id>
</dtml-if>
In either case, Loren's suggestion is probably better and cleaner (but
would not work for non property attributes named nickname, you may have
a requirement for 'nickname' to be a SQLMethod, for example).
-Michel