Dieter; Thanks for the reply.... after I posted the original question, I got off my lazy butt, searched a few sites, and came up with this: (hmmm...... a new acronym, maybe -- GOYLA?? [Get Off Your Lazy A--]) results=[] for object in context.objectValues('STX_Document'): if object.getProperty('topic') != '': if tuple not in results: results.append(object.topic) results.sort() return results as a python script, instead of the DTML method: <dtml-call "REQUEST.set('tmp',{})"> <dtml-in expr="_.sequence.sort(PARENTS[0].objectValues(['STX_Document']), (('topic', 'nocase'), ('title', 'cmp'),) )"> <dtml-call "REQUEST['tmp'].update({topic:''})"> </dtml-in> <dtml-in "REQUEST['tmp'].keys()"> <dtml-var sequence-item> </dtml-in> Just thought I'd share this for anyone following the thread.... I hate seeing questions asked in newsgroups without answers......
cgreen writes:
... DTML object ... The values of the "topic" property are returned. But when called as an override method for a Formulator MultiListField, I get this error:
Zope Error
Zope has encountered an error while publishing this resource.
Error Type: NameError Error Value: global name 'REQUEST' is not defined I guess, it is a standard error:
Whenever DTML objects are called explicitly, they should get 2 positional parameters. These parameters are necessary to provide the context to the DTML object call.
In your case, the context is obviously missing.
Please read the section "Calling DTML objects" in
<http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>
to learn more.
Dieter