[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