def breakRelations(event): """Break relations on any object pointing to us. That is, store the object path on the broken relation. """ obj = event.object if not IHasIncomingRelations.providedBy(obj): return catalog = component.queryUtility(ICatalog) intids = component.queryUtility(IIntIds) if catalog is None or intids is None: return # find all relations that point to us try: obj_id = intids.getId(obj) except KeyError: # our intid was unregistered already return rels = list(catalog.findRelations({'to_id': intids.getId(obj)})) for rel in rels: rel.broken(rel.to_path) # we also need to update the relations for these objects notify(ObjectModifiedEvent(rel.from_object))
def test_relation(self): contact = create(Builder('contact')) self.assertTrue(IHasIncomingRelations.providedBy(contact))