I ran into trouble with a Zope class that inherits from OFS.Folder.Folder
(the classic Folder class). My class is a bit special since it's acting both as a non-folderish document like object but still needs to contain other objects such as images and file attachments. The class had a method called index_html
which looked something like this:
def index_html(self, REQUEST, **kw):
""" return something"""
return self.something
The problem was that if I create one of these instances with the id index_html
it simply could not be viewed.
What I had to do was to use the __call__()
function on my class. That is apparently how Zope figures out which document to show/call. Now my class had this instead:
def __call__(self, REQUEST, **kw):
""" wrap view() """
return self.view(self.REQUEST, **kw)
def view(self, REQUEST, **kw):
""" return something"""
return self.something
That took care of my problems and now the parent instances could instantly view my document like instances called index_html
.
So, for the next time; use __call__()
instead of index_html()
.
Comments