Anders Bruun Olsen wrote at 2005-10-20 11:52 +0200:
On Wed, Oct 19, 2005 at 09:47:50PM +0200, Dieter Maurer wrote:
Zope has encountered a problem publishing your object. Cannot locate object at: http://localhost:8080/vitester/asonhe This is a "NotFound" problem. Zope is unable to locate "vitester/asonhe" Are you sure, "vitester/asonhe" is there?
asonhe is not there, but vitester has a __getitem__ method which executes a PageTemplateFile instance and returns it. I.e.
Thus, it returns a string. However, ZPublisher requires that all intermediate traversal steps return an object which is not of a simple type and does have a docstring. A string is a simple type, you cannot use it during traversal...
return self.test(self, self.REQUEST, value=value) (where self.test is a PageTemplateFile)
This results in a string (a simple type)...
It actually works if I just do:
return self.test.__of__(self)
This results in a "PageTemplateFile", which has a docstring and is not of simple type.
But that way I can't put any values in there. How can I do this then?
Can can return a wrapper and give it a docstring. class Wrapper: '''a wrapper around a string.''' # this is the docstring def __init__(self, str): self.str = str def __call__(self): return self.str Some security declarations might be necessary as well. Probably, a class attribute "__roles__ = None" is sufficient. -- Dieter