[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - moved _clearLocalRolesAfterClone code to separate event handler

Yvo Schubbe y.2007- at wcm-solutions.de
Wed Dec 26 09:30:46 EST 2007


Log message for revision 82450:
  - moved _clearLocalRolesAfterClone code to separate event handler

Changed:
  U   Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
  U   Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
  U   Products.CMFCore/trunk/Products/CMFCore/event.zcml

-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt	2007-12-26 13:52:09 UTC (rev 82449)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt	2007-12-26 14:30:45 UTC (rev 82450)
@@ -2,6 +2,8 @@
 
   Products.CMFCore 2.2.0 (unreleased)
 
+    - events: Moved _clearLocalRolesAfterClone code to separate handler.
+
     - interfaces: Added ICatalogAware for CMFCatalogAware methods.
 
     - setup handlers: All import and export steps are now registered globally.

Modified: Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py	2007-12-26 13:52:09 UTC (rev 82449)
+++ Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py	2007-12-26 14:30:45 UTC (rev 82450)
@@ -179,18 +179,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
     # ---
 
@@ -246,7 +234,6 @@
 
     elif IObjectClonedEvent.providedBy(event):
         ob.notifyWorkflowCreated()
-        ob._clearLocalRolesAfterClone()
 
     elif IObjectMovedEvent.providedBy(event):
         if event.newParent is not None:
@@ -256,6 +243,17 @@
         if event.oldParent is not None:
             ob.unindexObject()
 
+def handleDynamicTypeClonedEvent(ob, event):
+    """ Event subscriber for (IDynamicType, IObjectClonedEvent) 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 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.getId(), ['Owner'])
+
 def dispatchToOpaqueItems(ob, event):
     """Dispatch an event to opaque sub-items of a given object.
     """

Modified: Products.CMFCore/trunk/Products/CMFCore/event.zcml
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/event.zcml	2007-12-26 13:52:09 UTC (rev 82449)
+++ Products.CMFCore/trunk/Products/CMFCore/event.zcml	2007-12-26 14:30:45 UTC (rev 82450)
@@ -21,6 +21,12 @@
 
   <subscriber
       for=".interfaces.IDynamicType
+           OFS.interfaces.IObjectClonedEvent"
+      handler=".CMFCatalogAware.handleDynamicTypeClonedEvent"
+      />
+
+  <subscriber
+      for=".interfaces.IDynamicType
            zope.component.interfaces.IObjectEvent"
       handler=".CMFCatalogAware.dispatchToOpaqueItems"
       />



More information about the Checkins mailing list