Rik Hoekstra wrote:
Tom Deprez wrote:
Ok, now I found the error. The error must be in the while loop, where we say 'iterate until the obj = None'. However 'None' is never reached... (I guess). The following code works, but I this isn't at all a good solution.
Can someone tell me how I can safely test that the current object is the first object in the object database. In other laguages you can test this with 'nil'. How can I test this within Zope? Please, tell me!
Hm, is it - if it's undefined?
what about (taking the function from one of your previouw posts) (only lightly tested):
def recursiveMethod(self, obj, result): try: if obj.aq_parent: result.append(obj.title) recursiveMethod(self, obj.aq_parent, result) except AttributeError: pass return result
This is less elegant than testing for the attribute aq_parent, but either hasattr is not allowed for External Methods, or ac_parent is not an attribute.
Note, however, that if an object has no title it may also throw in an AttributeError, thus aborting your method in too early. You could try and catch this exception separately, but perhaps it shouldn't happen anyway.
One small addition: I threw out the test for KBItem (because my Zope has no such items), you can put them back in at line 4. Sorry for posting without thinking Rik