I don't know of a "definitive listing" but try to have as a rule of thumb to never use getattr or hasattr in TAL. If you find yourself doing so you know you've gone to far without refactoring into python scripts. The most advanced luxury I afford myself in TAL is python:test() or python:path() You can also make it a habit to set aside Python scripts in a certain fashion just to support your TAL. You could for example name all the python scripts something like "evaluateEnvironment_4tal" and then be able to do something like this in TAL. <div tal:condition="here/evaluateEnvironment_4tal">foo bar</div> Peter Ben Last (Zope) wrote:
From: Peter Bengtsson [mailto:mail@peterbe.com] <h2 tal:content="python:path('here/%s/environment'%request['partner'])">
Beautifully elegant, Peter, thanks :) Now I shall write 100 times; "I must remember to invoke Python more often..." And thanks to Matt also for the python script reference.
Something I'm finding *slightly* annoying is the mix of Python semantics in Zope. In some places, one uses: object['attributeName'] ...and in others: getattr(object, 'attributeName') ...depending, of course, on the type of object with which one is provided. In one Python script I had, one container appeared to work the first way and another the second. ZPT seems to work it out every time. Is there a definitive listing of what things are treatable as dicts and which as objects?
ben
-- Peter Bengtsson, http://www.peterbe.com