[Checkins] SVN: Products.CMFCore/trunk/Products/CMFCore/ - made sure .zexp imports don't reset workflow states
Yvo Schubbe
y.2009 at wcm-solutions.de
Thu Feb 19 06:35:31 EST 2009
Log message for revision 96733:
- made sure .zexp imports don't reset workflow states
- added some WorkflowTool tests
Changed:
U Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
U Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
U Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py
U Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py
-=-
Modified: Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2009-02-19 11:13:26 UTC (rev 96732)
+++ Products.CMFCore/trunk/Products/CMFCore/CHANGES.txt 2009-02-19 11:35:31 UTC (rev 96733)
@@ -4,6 +4,12 @@
2.2.0 (unreleased)
------------------
+- Events: Changed 'handleContentishEvent' behavior for IObjectCopiedEvent.
+ 'WorkflowTool.notifyCreated' no longer resets the workflow state, so the
+ the event subscriber clears the workflow history instead.
+
+- WorkflowTool: 'notifyCreated' no longer overrides assigned workflow states.
+
- No longer catch a `NotImplemented` string exception in the MembershipTool
in deleteMembers.
Modified: Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py 2009-02-19 11:13:26 UTC (rev 96732)
+++ Products.CMFCore/trunk/Products/CMFCore/CMFCatalogAware.py 2009-02-19 11:35:31 UTC (rev 96733)
@@ -247,7 +247,8 @@
ob.unindexObject()
elif IObjectCopiedEvent.providedBy(event):
- pass
+ if hasattr(aq_base(ob), 'workflow_history'):
+ del ob.workflow_history
elif IObjectCreatedEvent.providedBy(event):
if hasattr(aq_base(ob), 'addCreator'):
Modified: Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py 2009-02-19 11:13:26 UTC (rev 96732)
+++ Products.CMFCore/trunk/Products/CMFCore/WorkflowTool.py 2009-02-19 11:35:31 UTC (rev 96733)
@@ -286,6 +286,8 @@
"""
wfs = self.getWorkflowsFor(ob)
for wf in wfs:
+ if self.getHistoryOf(wf.getId(), ob):
+ continue
wf.notifyCreated(ob)
self._reindexWorkflowVariables(ob)
Modified: Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py
===================================================================
--- Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py 2009-02-19 11:13:26 UTC (rev 96732)
+++ Products.CMFCore/trunk/Products/CMFCore/tests/test_WorkflowTool.py 2009-02-19 11:35:31 UTC (rev 96733)
@@ -349,6 +349,21 @@
self.assertEqual( len( notified ), 1 )
self.assertEqual( notified[0], ( ob, ) )
+ def test_notifyCreated_skips_workflows_with_status(self):
+ tool = self._makeWithTypesAndChain()
+
+ ob = DummyContent('dummy')
+ dummy_status0 = object()
+ ob.workflow_history = {'a': (dummy_status0,)}
+ tool.notifyCreated(ob)
+
+ notified = tool.a.notified('created')
+ self.assertEqual( len(notified), 0 )
+
+ notified = tool.b.notified('created')
+ self.assertEqual( len(notified), 1 )
+ self.assertEqual( notified[0], (ob,) )
+
def test_notifyBefore( self ):
provideHandler(notifyBeforeHandler)
@@ -403,6 +418,35 @@
self.assertEqual( len( notified ), 1 )
self.assertEqual( notified[0], ( ob, 'action', 'exception' ) )
+ def test_getStatusOf(self):
+ tool = self._makeWithTypesAndChain()
+
+ ob = DummyContent('dummy')
+ dummy_status0 = object()
+ dummy_status1 = object()
+ ob.workflow_history = {'a': (dummy_status0, dummy_status1)}
+
+ self.assertEqual( tool.getStatusOf('a', ob), dummy_status1 )
+
+ def test_setStatusOf(self):
+ tool = self._makeWithTypesAndChain()
+
+ ob = DummyContent('dummy')
+ dummy_status0 = object()
+ tool.setStatusOf('a', ob, dummy_status0)
+
+ self.failUnless( 'a' in ob.workflow_history )
+ self.assertEqual( len(ob.workflow_history['a']), 1 )
+ self.assertEqual( ob.workflow_history['a'][0], dummy_status0 )
+
+ dummy_status1 = object()
+ tool.setStatusOf('a', ob, dummy_status1)
+
+ self.failUnless( 'a' in ob.workflow_history )
+ self.assertEqual( len(ob.workflow_history['a']), 2 )
+ self.assertEqual( ob.workflow_history['a'][0], dummy_status0 )
+ self.assertEqual( ob.workflow_history['a'][1], dummy_status1 )
+
def xxx_test_updateRoleMappings( self ):
"""
Build a tree of objects, invoke tool.updateRoleMappings,
More information about the Checkins
mailing list