Max M wrote:
The correct way to ensure that there are no dangling relations naturally is to create a method in any product being related to like (from the top of my head)::
def manage_beforeDelete(self): self.relations.delete(self)
Yup, that's what I did as soon I discovered manage_beforeDelete. But just to be sure I left the same call in my addObject method ;-) And in the manage_beforeDelete of the referenced object I perform a check to see if the object is used by other objects, and raise a BeforeDeleteException[*] in that case (any other exception would be logged by zope but would not stop the deletion). def manage_beforeDelete(self): if self.relations.get(self): raise BeforeDeleteException, ('Object in use') [*]in case it could be useful to someone else (to avoid some head banging ;-) from OFS.ObjectManager import BeforeDeleteException Bye -- Luca Olivetti Wetron Automatización S.A. http://www.wetron.es/ Tel. +34 93 5883004 Fax +34 93 5883007