[Zope] dtml-if question

Terry Hancock hancock@anansispaceworks.com
Tue, 13 May 2003 10:03:29 -0700


On Tuesday 13 May 2003 07:02 am, Erwin Ambrosch wrote:
> But how can I test of non existens of nol.
> I would need something like
> 
> <dtml-if "_.has_key('nol') and (nol=='root' or nol=='' or !nol)">

If it "doesn't exist" then _.has_key('nol') would've
evaluated false, and none of the rest of the statement
matters.

If it *does* exist, but is equal to a false value -- '', None, (),
[], or 0 -- then "not nol" will be false (you don't want "!" --
that's either meaningless or a bitwise NOT, I can't
remember, but not a logical NOT).  Remember: python
uses words to do logic and symbols to do math.
(Actually I don't know if that's rigorously true, but it's a
good rule of thumb for remembering how to do "if"
expressions ;-) ).

So you can probably write that:
<dtml-if expr="_.has_key('nol') and (nol=='root' or not nol)">

or maybe you meant:

<dtml-if expr="not _.has_key('nol') or not nol or nol=='root'">

which seems more logical: this will evaluate to true if there
is no "nol" name, the name maps to a false value, or to the
special value "root".  Any other value will be false. My guess
is that this is what you meant -- but only you know what you
want. ;-)

HTH,
Terry

--
Terry Hancock ( hancock at anansispaceworks.com )
Anansi Spaceworks  http://www.anansispaceworks.com