[Zope] NamedTemplate.__call__ not returning anything
Maurits van Rees
m.van.rees at zestsoftware.nl
Sun Jan 13 18:32:42 EST 2008
I have some code where I try to get a named template and render it and
if it fails I render a default template instead. But this fails,
presumably because the __call__ method of NamedTemplate does not
return anything. From zope/formlib/namedtemplate.py (Zope 2.10):
def __init__(self, name):
self.__name__ = name
def __get__(self, instance, type=None):
if instance is None:
return component.getAdapter(instance, INamedTemplate, self.__name__)
def __call__(self, instance, *args, **kw):
I seems strange to me that __call__ does not actually return
anything. Is it just me?
Now, I have some other code where NamedTemplate is working just fine,
so there is probably nothing wrong with this __call__ method. So can
anybody tell me what is wrong with my following code then?
default_template = ViewPageTemplateFile('vocabularyportlet.pt')
"""Render a named template or the default template.
template = NamedTemplate("test.vocabulary")
output = template(self)
output = None
# Even if the component lookup works, output can be None.
if output is None:
output = self.default_template()
The line "output = template(self)" fails with a ComponentLookupError
unless a named template with the name test.vocabulary exists. But
when that template is found, output is still None.
In case you want to see the entire code, this is in a Plone portlet
that I am developing:
And actually, the tests that I added pass when I change the
NamedTemplate.__call__ method to return the value that it just got.
So should that method be changed or is there a different way to do this?
Maurits van Rees | http://maurits.vanrees.org/
Work | http://zestsoftware.nl/
"This is your day, don't let them take it away." [Barlow Girl]
More information about the Zope