[Zope] acquisition problem (I think???)

Dieter Maurer dieter@handshake.de
Tue, 4 Feb 2003 19:28:31 +0100


Andrew Altepeter wrote at 2003-2-3 13:10 -0600:
 > I am writing a product through the ZMI (which extends Folder) that
 > contains products of the same type (basically a hierarchical system).  I
 > want to be able to delete an arbitrary item and all of it's sub-items. 
 > The method that does this is a recursive deleteMe() python script.  
 > 
 > Here is the code that I am using:
 > 
 > def deleteMe(root=1):
 >   children = context.objectIds('NavigationMenu')
 >   if (len(children)):
 >     for child in children:
 >       context[child].deleteMe(root=0)
 >     context.manage_delObjects(children)
 >   if (root==1):
 >     context.aq_parent.manage_delObjects(context.id)
The standard way to delete a subhierarchie is:

  *  you have a single call to "manage_delObjects(ids)".
     It deletes the subtrees rooted in "ids".

  *  you customize "manage_beforeDelete" when you need special
     operations before the object is deleted.

 > So, to me this looks like your standard recursive function (well, sort
 > of).  However, when I get to the bottom of the tree, context.objectIds
 > contains siblings, not children.  I would expect that if there were no
 > children, objectIds would return [].
It depends on the base classes inherited by your product class.

  In my view, it is a bug that "SimpleItem.Item" implements
  Object Manager methods (it is not such a thing!).
  
  You, on the other hand, would like that and apparently
  got a base class that does not define these methods.


Dieter