[Zope] External Method 3

Rik Hoekstra rik.hoekstra@inghist.nl
Wed, 29 Mar 2000 11:46:21 +0200


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