Log message for revision 40371: Merged 40370 from 2.9 branch: Send ContainerModifiedEvent when appropriate. This requires Five 1.3+ >= r20254. Some BBB has been kept until Zope 3.2 >= r40368 is stiched in.
Changed: U Zope/trunk/lib/python/OFS/CopySupport.py U Zope/trunk/lib/python/OFS/ObjectManager.py U Zope/trunk/lib/python/OFS/OrderSupport.py U Zope/trunk/lib/python/Products/BTreeFolder2/BTreeFolder2.py -=- Modified: Zope/trunk/lib/python/OFS/CopySupport.py =================================================================== --- Zope/trunk/lib/python/OFS/CopySupport.py 2005-11-25 18:47:48 UTC (rev 40370) +++ Zope/trunk/lib/python/OFS/CopySupport.py 2005-11-25 18:50:38 UTC (rev 40371) @@ -37,6 +37,8 @@ from zope.event import notify from zope.app.event.objectevent import ObjectCopiedEvent from zope.app.container.contained import ObjectMovedEvent +import Products.Five # BBB: until Zope 3.2 >= r40368 is stiched in +from zope.app.container.contained import notifyContainerModified from OFS.event import ObjectWillBeMovedEvent from OFS.event import ObjectClonedEvent import OFS.subscribers @@ -273,6 +275,9 @@ ob = self._getOb(id) notify(ObjectMovedEvent(ob, orig_container, orig_id, self, id)) + notifyContainerModified(orig_container) + if aq_base(orig_container) is not aq_base(self): + notifyContainerModified(self) ob._postCopy(self, op=1) # try to make ownership implicit if possible @@ -346,6 +351,7 @@ ob = self._getOb(new_id) notify(ObjectMovedEvent(ob, self, id, self, new_id)) + notifyContainerModified(self) ob._postCopy(self, op=1) Modified: Zope/trunk/lib/python/OFS/ObjectManager.py =================================================================== --- Zope/trunk/lib/python/OFS/ObjectManager.py 2005-11-25 18:47:48 UTC (rev 40370) +++ Zope/trunk/lib/python/OFS/ObjectManager.py 2005-11-25 18:50:38 UTC (rev 40371) @@ -53,6 +53,8 @@ from zope.event import notify from zope.app.container.contained import ObjectAddedEvent from zope.app.container.contained import ObjectRemovedEvent +import Products.Five # BBB: until Zope 3.2 >= r40368 is stiched in +from zope.app.container.contained import notifyContainerModified from OFS.event import ObjectWillBeAddedEvent from OFS.event import ObjectWillBeRemovedEvent import OFS.subscribers @@ -312,6 +314,7 @@ if not suppress_events: notify(ObjectAddedEvent(ob, self, id)) + notifyContainerModified(self) OFS.subscribers.compatibilityCall('manage_afterAdd', ob, ob, self) @@ -360,6 +363,7 @@ if not suppress_events: notify(ObjectRemovedEvent(ob, self, id)) + notifyContainerModified(self) security.declareProtected(access_contents_information, 'objectIds') def objectIds(self, spec=None): Modified: Zope/trunk/lib/python/OFS/OrderSupport.py =================================================================== --- Zope/trunk/lib/python/OFS/OrderSupport.py 2005-11-25 18:47:48 UTC (rev 40370) +++ Zope/trunk/lib/python/OFS/OrderSupport.py 2005-11-25 18:50:38 UTC (rev 40371) @@ -24,6 +24,8 @@ from DocumentTemplate.sequence import sort from Globals import InitializeClass from zope.interface import implements +import Products.Five # BBB: until Zope 3.2 >= r40368 is stiched in +from zope.app.container.contained import notifyContainerModified from interfaces import IOrderedContainer as z3IOrderedContainer from IOrderSupport import IOrderedContainer as z2IOrderedContainer @@ -135,7 +137,8 @@ # security.declareProtected(manage_properties, 'moveObjectsByDelta') - def moveObjectsByDelta(self, ids, delta, subset_ids=None): + def moveObjectsByDelta(self, ids, delta, subset_ids=None, + suppress_events=False): """ Move specified sub-objects by delta. """ if type(ids) is StringType: @@ -180,6 +183,9 @@ 'not exist.' % subset_ids[pos]) self._objects = tuple(objects) + if not suppress_events: + notifyContainerModified(self) + return counter security.declareProtected(manage_properties, 'moveObjectsUp') @@ -227,11 +233,12 @@ raise ValueError('The object with the id "%s" does not exist.' % id) security.declareProtected(manage_properties, 'moveObjectToPosition') - def moveObjectToPosition(self, id, position): + def moveObjectToPosition(self, id, position, suppress_events=False): """ Move specified object to absolute position. """ delta = position - self.getObjectPosition(id) - return self.moveObjectsByDelta(id, delta) + return self.moveObjectsByDelta(id, delta, + suppress_events=suppress_events) security.declareProtected(access_contents_information, 'getDefaultSorting') def getDefaultSorting(self): @@ -257,7 +264,7 @@ old_position = self.getObjectPosition(id) result = super(OrderSupport, self).manage_renameObject(id, new_id, REQUEST) - self.moveObjectToPosition(new_id, old_position) + self.moveObjectToPosition(new_id, old_position, suppress_events=True) return result def tpValues(self): Modified: Zope/trunk/lib/python/Products/BTreeFolder2/BTreeFolder2.py =================================================================== --- Zope/trunk/lib/python/Products/BTreeFolder2/BTreeFolder2.py 2005-11-25 18:47:48 UTC (rev 40370) +++ Zope/trunk/lib/python/Products/BTreeFolder2/BTreeFolder2.py 2005-11-25 18:50:38 UTC (rev 40371) @@ -40,6 +40,7 @@ from zope.event import notify from zope.app.container.contained import ObjectAddedEvent from zope.app.container.contained import ObjectRemovedEvent +from zope.app.container.contained import notifyContainerModified from OFS.event import ObjectWillBeAddedEvent from OFS.event import ObjectWillBeRemovedEvent import OFS.subscribers @@ -443,6 +444,7 @@ if not suppress_events: notify(ObjectAddedEvent(ob, self, id)) + notifyContainerModified(self) OFS.subscribers.compatibilityCall('manage_afterAdd', ob, ob, self) @@ -461,6 +463,7 @@ if not suppress_events: notify(ObjectRemovedEvent(ob, self, id)) + notifyContainerModified(self) # Aliases for mapping-like access. _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins