[Zope] Architectural decisions

Peter Bengtsson mail at peterbe.com
Mon May 24 18:44:02 EDT 2004

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 

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>


Ben Last (Zope) wrote:

>>From: Peter Bengtsson [mailto:mail at 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:
>...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

Peter Bengtsson, http://www.peterbe.com

More information about the Zope mailing list