[Zope-dev] DTML sqltest tag and python expr. Bug in Zope Book?
Dieter Maurer
dieter@handshake.de
Sat, 30 Jun 2001 11:41:57 +0200 (CEST)
Yves-Eric Martin writes:
> > I expect that "dtml-sqltest" does not support the "expr"
> > attribute due to its "optional".
> >
> > It is not easy to define the semantics of "optional" for
> > arbitrary expressions.
> ....
> To overcome that problem, I think it would make sense to treat the
> "optional" like this: when the expression raises a NameError, if the
> variable name that caused the error is an expected argument of the
> ZSQLMethod, then this argument was not provided, so do not render the
> sqltest tag. Otherwise, we have a real error. In a pythonish algorithm,
> that would look like this:
>
>
> try:
> renderedExpr = eval(expr)
> except NameError, varName:
> if varName in ZSQLMethodArguments:
> # "optional" behavior for missing variable
> pass
> else:
> # We have a real error
> raise NameError, varName
> else:
> # render sqltest tag
> ...
>
>
> Do you think that makes sense?
If I were a purist, I would answer: no.
The name error could come from a nested call that incidentally
uses the same name for a variable as a request argument.
If I were a Zope maintainer, I would answer: no.
The feature is rarely used and if it is, there is
a way to do it with existing DTML means:
As you demonstrated:
<dtml-if XXX>
<dtml-sqltest ...>
</dtml-if>
does work, although it is not really nice -- but not too bad, either.
If I would need this feature extensively, I would privately
enhance Zope as necessary. I learned yesterday, how to
use "cvs import/checkout/update" to keep such private enhancements
across Zope upgrades.
But your point was: The feature is used in the Zope book,
thus, apparently, it was useful. The question:
"why not implement the feature rather than change the book".
Maybe, DC says something about this....
Dieter