[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