Thanks for your response. I tried your methods on a normal folder that contains some other folders, dtmldocuments, and images, but it failed on the <dtml-let sheet=sequence-item> which followed the <dtml-in "propertysheets.items()">. If I used <dtml-let sheet=sequence-key> instead, then I always got back only two strings, "default" and "webdav". So I guess it is picking something else up. Any ideas? Perhaps I should be using ZClasses, but I just wanted to have what I thought would be the simple ability to loop through properties of an object without knowing what they were before. thanks Matt Bion Kapil Thangavelu wrote:
Matt wrote:
Can someone give me an example, either in dtml or external methods of accessing or listing the properties of the current object I am calling a method on.
Or point me to a source
Matt Bion
you can ask an object what properties it has and retrieve them through dtml, like
<dtml-if "_.hasattr(this(), 'foobar')"> <dtml-var foobar> or if you want a reference, instead of a string <dtml-var "_.getattr(this(), 'foobar')"> </dtml-if>
if you want to examine the propertys of an object you can go iterate through its propertysheets (works for a zclass, the rest i'm not sure). You can reference the Zope Quick Reference for more info.
<dtml-call "REQUEST.set('PropList', '')">
<dtml-in "propertysheets.items()"> <dtml-let sheet=sequence-item> <dtml-in "sheet.propertyItems()">
<dtml-let prop=sequence-key> <dtml-call "REQUEST['PropList'].append(prop)"> </dtml-let>
</dtml-in> </dtml-let> </dtml-in>
<dtml-if "'foobar' in PropList or 'barfoo' in PropList or 'guesswho' in PropList">
Success
</dtml-if>
Kapil