[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - fixed
content creation refactoring (addCreator wasn't called)
Yvo Schubbe
y.2008 at wcm-solutions.de
Sun Apr 20 13:05:05 EDT 2008
Log message for revision 85506:
- fixed content creation refactoring (addCreator wasn't called)
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
U Products.CMFCore/trunk/Products/CMFCore/TypesTool.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2008-04-20 16:44:45 UTC (rev 85505)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2008-04-20 17:05:04 UTC (rev 85506)
@@ -7,10 +7,11 @@
DEPENDENCIES.txt and automatic installation in setup.py.
- TypesTool: Refactored content creation.
- Moved notifyWorkflowCreated and indexObject calls to IObjectAddedEvent
- handler. Please make sure all oldstyle content factory methods use
- _setObject with suppress_events=True. CMF factory methods don't finish
- object creation, so they should not send the IObjectAddedEvent.
+ Moved addCreator call to IObjectCreatedEvent handler and moved
+ notifyWorkflowCreated and indexObject calls to IObjectAddedEvent handler.
+ Please make sure all oldstyle content factory methods use _setObject with
+ suppress_events=True. CMF factory methods don't finish object creation,
+ so they should not send the IObjectAddedEvent.
- interfaces: Added new interfaces for CMFCatalogAware methods.
In the long run ICatalogAware, IWorkflowAware and IOpaqueItemManager will
Modified: Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py 2008-04-20 16:44:45 UTC (rev 85505)
+++ Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py 2008-04-20 17:05:04 UTC (rev 85506)
@@ -28,6 +28,8 @@
from zope.app.container.interfaces import IObjectMovedEvent
from zope.component import subscribers
from zope.interface import implements
+from zope.lifecycleevent.interfaces import IObjectCopiedEvent
+from zope.lifecycleevent.interfaces import IObjectCreatedEvent
from interfaces import ICallableOpaqueItem
from interfaces import ICatalogAware
@@ -244,6 +246,13 @@
if event.oldParent is not None:
ob.unindexObject()
+ elif IObjectCopiedEvent.providedBy(event):
+ pass
+
+ elif IObjectCreatedEvent.providedBy(event):
+ if hasattr(aq_base(ob), 'addCreator'):
+ ob.addCreator()
+
def handleDynamicTypeCopiedEvent(ob, event):
""" Event subscriber for (IDynamicType, IObjectCopiedEvent) events.
"""
Modified: Products.CMFCore/trunk/Products/CMFCore/TypesTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/TypesTool.py 2008-04-20 16:44:45 UTC (rev 85505)
+++ Products.CMFCore/trunk/Products/CMFCore/TypesTool.py 2008-04-20 17:05:04 UTC (rev 85506)
@@ -36,6 +36,7 @@
from zope.event import notify
from zope.i18nmessageid import Message
from zope.interface import implements
+from zope.lifecycleevent import ObjectCreatedEvent
from ActionProviderBase import ActionProviderBase
from exceptions import AccessControl_Unauthorized
@@ -433,6 +434,7 @@
obj = container._getOb(newid)
if hasattr(obj, '_setPortalTypeName'):
obj._setPortalTypeName(self.getId())
+ notify(ObjectCreatedEvent(obj))
notify(ObjectAddedEvent(obj, container, newid))
notifyContainerModified(container)
@@ -442,6 +444,7 @@
obj = factory(id, *args, **kw)
if hasattr(obj, '_setPortalTypeName'):
obj._setPortalTypeName(self.getId())
+ notify(ObjectCreatedEvent(obj))
rval = container._setObject(id, obj)
newid = isinstance(rval, basestring) and rval or id
obj = container._getOb(newid)
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py 2008-04-20 16:44:45 UTC (rev 85505)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_TypesTool.py 2008-04-20 17:05:04 UTC (rev 85506)
@@ -35,6 +35,7 @@
from zope.component.interfaces import IFactory
from zope.interface import implements
from zope.interface.verify import verifyClass
+from zope.lifecycleevent.interfaces import IObjectCreatedEvent
from zope.testing.cleanup import cleanUp
from Products.CMFCore.ActionInformation import ActionInformation
@@ -450,6 +451,11 @@
def test_events(self):
events = []
+ @adapter(IObjectCreatedEvent)
+ def _handleObjectCreated(event):
+ events.append(event)
+ provideHandler(_handleObjectCreated)
+
@adapter(IObjectWillBeAddedEvent)
def _handleObjectWillBeAdded(event):
events.append(event)
@@ -466,9 +472,13 @@
provideHandler(_handleContainerModified)
self.ti.constructInstance(self.f, 'foo')
- self.assertEquals(len(events), 2)
+ self.assertEquals(len(events), 3)
evt = events[0]
+ self.failUnless(IObjectCreatedEvent.providedBy(evt))
+ self.assertEquals(evt.object, self.f.foo)
+
+ evt = events[1]
self.failUnless(IObjectAddedEvent.providedBy(evt))
self.assertEquals(evt.object, self.f.foo)
self.assertEquals(evt.oldParent, None)
@@ -476,7 +486,7 @@
self.assertEquals(evt.newParent, self.f)
self.assertEquals(evt.newName, 'foo')
- evt = events[1]
+ evt = events[2]
self.failUnless(IContainerModifiedEvent.providedBy(evt))
self.assertEquals(evt.object, self.f)
@@ -500,6 +510,11 @@
def test_events(self):
events = []
+ @adapter(IObjectCreatedEvent)
+ def _handleObjectCreated(event):
+ events.append(event)
+ provideHandler(_handleObjectCreated)
+
@adapter(IObjectWillBeAddedEvent)
def _handleObjectWillBeAdded(event):
events.append(event)
@@ -516,9 +531,13 @@
provideHandler(_handleContainerModified)
self.ti.constructInstance(self.f, 'foo')
- self.assertEquals(len(events), 3)
+ self.assertEquals(len(events), 4)
evt = events[0]
+ self.failUnless(IObjectCreatedEvent.providedBy(evt))
+ self.assertEquals(evt.object, self.f.foo)
+
+ evt = events[1]
self.failUnless(IObjectWillBeAddedEvent.providedBy(evt))
self.assertEquals(evt.object, self.f.foo)
self.assertEquals(evt.oldParent, None)
@@ -526,7 +545,7 @@
self.assertEquals(evt.newParent, self.f)
self.assertEquals(evt.newName, 'foo')
- evt = events[1]
+ evt = events[2]
self.failUnless(IObjectAddedEvent.providedBy(evt))
self.assertEquals(evt.object, self.f.foo)
self.assertEquals(evt.oldParent, None)
@@ -534,7 +553,7 @@
self.assertEquals(evt.newParent, self.f)
self.assertEquals(evt.newName, 'foo')
- evt = events[2]
+ evt = events[3]
self.failUnless(IContainerModifiedEvent.providedBy(evt))
self.assertEquals(evt.object, self.f)
More information about the Checkins
mailing list