[Zope] brain hurts regarding dynamic fcn args in Python
Dieter Maurer
dieter@handshake.de
Tue, 20 Jun 2000 21:48:30 +0200 (CEST)
Jeff Sasmor writes:
> Is there a (straightforward?) way to dynamically compose function
> argument lists? For example, in C, you can write"
>
> f(arg1, arg2, (conditional expression)?(val for TRUE state):(val for FALSE state)).
Others have pointed out, that you can use
"and" and "or" to emulate "? ... : ...".
Be careful, there are dangers, because the emulation is not faithful.
> In my case here in Zope, sometimes I have to search a ZCatalog
> prior to displaying the results in a <dtml-in> looping construct.
>
> <dtml-in
> "Catalog.searchResults(meta_type='EventDoc',event_date=[first,last],event_date_usage='range:min:max',sort_on='event_date
> ')">
>
> ....
> </dtml-in>
>
>
> Now if the 'moderated' property is active I want to add the keyword arg
>
> reviewed='on'
>
> to the arg list at the time that the searchResults method is invoked.
In some cases, you could use:
...(..., reviewed= moderated and 'on', ...)
This will define "reviewed". It will have a Python "false" value
if moderated is "false", otherwise the value 'on'.
If your function uses code like:
"if kw.has_key('reviewed') and kw['reviewed': ..."
this will work. If the second and term is missing, if won't.
I do not know, what code ZCatalog uses. Try it out or
look into the source.
Dieter