[Checkins] SVN: Products.CMFCore/branches/2.1/Products/CMFCore/
backported -r82449:82457 from trunk:
Yvo Schubbe
y.2007- at wcm-solutions.de
Thu Dec 27 13:03:03 EST 2007
Log message for revision 82471:
backported -r82449:82457 from trunk:
- fixed some handleContentishEvent issues
Changed:
U Products.CMFCore/branches/2.1/Products/CMFCore/CHANGES.txt
U Products.CMFCore/branches/2.1/Products/CMFCore/CMFCatalogAware.py
U Products.CMFCore/branches/2.1/Products/CMFCore/event.zcml
U Products.CMFCore/branches/2.1/Products/CMFCore/tests/test_CMFCatalogAware.py
-=-
Modified: Products.CMFCore/branches/2.1/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/branches/2.1/Products/CMFCore/CHANGES.txt 2007-12-27 14:28:29 UTC (rev 82470)
+++ Products.CMFCore/branches/2.1/Products/CMFCore/CHANGES.txt 2007-12-27 18:03:03 UTC (rev 82471)
@@ -2,6 +2,11 @@
Products.CMFCore 2.1.1 (unreleased)
+ - Events: Fixed some handleContentishEvent issues.
+ Moved _clearLocalRolesAfterClone code to separate handler that is
+ triggered before indexing and also for folders. Made sure notifyModified
+ is not called if objects are just moved.
+
- PortalObject: Added setSite to getSiteManager for old instances. This
fixes migrations from Plone 2.1 to 3.0.
Modified: Products.CMFCore/branches/2.1/Products/CMFCore/CMFCatalogAware.py
===================================================================
--- Products.CMFCore/branches/2.1/Products/CMFCore/CMFCatalogAware.py 2007-12-27 14:28:29 UTC (rev 82470)
+++ Products.CMFCore/branches/2.1/Products/CMFCore/CMFCatalogAware.py 2007-12-27 18:03:03 UTC (rev 82471)
@@ -195,18 +195,6 @@
"""
return [t[1] for t in self.opaqueItems()]
- # Hooks
- # -----
-
- def _clearLocalRolesAfterClone(self):
- # Make sure owner local role is set after pasting
- # The standard Zope mechanisms take care of executable ownership
- current_user = _getAuthenticatedUser(self)
- if current_user is not None:
- local_role_holders = [x[0] for x in self.get_local_roles()]
- self.manage_delLocalRoles(local_role_holders)
- self.manage_setLocalRoles(current_user.getId(), ['Owner'])
-
# ZMI
# ---
@@ -262,16 +250,30 @@
elif IObjectClonedEvent.providedBy(event):
ob.notifyWorkflowCreated()
- ob._clearLocalRolesAfterClone()
elif IObjectMovedEvent.providedBy(event):
if event.newParent is not None:
- ob.reindexObject()
+ ob.indexObject()
elif IObjectWillBeMovedEvent.providedBy(event):
if event.oldParent is not None:
ob.unindexObject()
+def handleDynamicTypeCopiedEvent(ob, event):
+ """ Event subscriber for (IDynamicType, IObjectCopiedEvent) events.
+ """
+ # Make sure owner local role is set after pasting
+ # The standard Zope mechanisms take care of executable ownership
+ current_user = _getAuthenticatedUser(ob)
+ if current_user is None:
+ return
+
+ current_user_id = current_user.getId()
+ if current_user_id is not None:
+ local_role_holders = [ x[0] for x in ob.get_local_roles() ]
+ ob.manage_delLocalRoles(local_role_holders)
+ ob.manage_setLocalRoles(current_user_id, ['Owner'])
+
def dispatchToOpaqueItems(ob, event):
"""Dispatch an event to opaque sub-items of a given object.
"""
Modified: Products.CMFCore/branches/2.1/Products/CMFCore/event.zcml
===================================================================
--- Products.CMFCore/branches/2.1/Products/CMFCore/event.zcml 2007-12-27 14:28:29 UTC (rev 82470)
+++ Products.CMFCore/branches/2.1/Products/CMFCore/event.zcml 2007-12-27 18:03:03 UTC (rev 82471)
@@ -21,6 +21,12 @@
<subscriber
for=".interfaces.IDynamicType
+ zope.lifecycleevent.interfaces.IObjectCopiedEvent"
+ handler=".CMFCatalogAware.handleDynamicTypeCopiedEvent"
+ />
+
+ <subscriber
+ for=".interfaces.IDynamicType
zope.component.interfaces.IObjectEvent"
handler=".CMFCatalogAware.dispatchToOpaqueItems"
/>
Modified: Products.CMFCore/branches/2.1/Products/CMFCore/tests/test_CMFCatalogAware.py
===================================================================
--- Products.CMFCore/branches/2.1/Products/CMFCore/tests/test_CMFCatalogAware.py 2007-12-27 14:28:29 UTC (rev 82470)
+++ Products.CMFCore/branches/2.1/Products/CMFCore/tests/test_CMFCatalogAware.py 2007-12-27 18:03:03 UTC (rev 82471)
@@ -315,7 +315,7 @@
folder2.manage_pasteObjects(cookie)
self.assertEquals(cat.log, ["unindex /site/folder1/bar",
- "reindex /site/folder2/bar []"])
+ "index /site/folder2/bar"])
def test_object_reindexed_after_moving(self):
@@ -331,7 +331,7 @@
site.manage_renameObject(id='bar', new_id='baz')
self.assertEquals(cat.log, ["unindex /site/bar",
- "reindex /site/baz []"])
+ "index /site/baz"])
def test_suite():
More information about the Checkins
mailing list