[Zope] Site Navigation problem
Nico de Boer
nico@nfg.nl
04 Sep 2002 09:51:20 +0200
Hi all,
I'm working on a site navigation product. For the rendering I've got
some rendering methods that the site owner can customize. This way the
rendering methods aren't hard coded in python.
Now I've got a problem as someone removes one of these methods. Here's
a snippet of code for a tree site menu:
# test if a tree menu has to be generated
if self.mode=='tree':
# test if the current item is active
if self.isactive(objectid,newcontextid):
# seperate method to test for dtml rendering-method
if self.methodTestOk('tree_item_active'):
# call the dtml-method from python
return self.NavItem(self.tree_item_active)
else:
# the current item is inactive
# test if dtml rendering-method isn't deleted
if self.methodTestOk('tree_item_link'):
# call the dtml-method from python
return self.NavItem(self.tree_item_link)
def NavItem(self, dtmlmethod):
return self.call(
dtmlmethod,
client=self,
REQUEST=self.REQUEST)
def call(self, f, *args, **kw):
try: return apply(f,args, kw)
except:
import sys
raise sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2]
def methodTestOk(self, methodname):
if hasattr(self, methodname):
return 1
else:
return 0
This is an example of a dtml-rendering method (the current object is given as
an argument to the method):
<tr>
<td>
<a href="<dtml-var absolute_url>"><dtml-var title_or_id></a>
</td>
</tr>
Maybe someone knows an other way to call dtml-methods from python. The
problem with my code is that I don't get any error message if one of
the methods is deleted. I get a None object back. Is it possible that
methodTestOk returns the errormessage?
Can someone help me with my problem?
Greetz Nico