Brian wrote:
ZPublisher looks first for index_html, and will only use __call__ if it doesn't find an index_html on the published object.
Looking at ZPublisher/BaseRequest.py, I'm starting to understand.
Note that the index_html may be acquired from a containing object, so an object that always wants to control its own rendering should define its own index_html to prevent that.
Further, this is the *only* way to do it. As I've noticed recently, any attempts to delete index_html in the root folder will result in recreation at the next upgrade (for Debian at least). Because there will always be an index_html in the heirarchy, there is no way to affect behavior by defining __call__. Because there is no hook before index_html, is is impossible to (cleanly) make an object that renders itself sometimes, and allows index_html to do it at other times.
It sounds like the PropertyFolder implementation might want to do something like:
class PropertyFolder(...): def __call__(...): ...
# alias to be sure we always control our rendering index_html = __call__
This would result in never being able to call the index_html in the ZODB. --kyler