[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