[Erp5-report] r17046 - in /erp5/trunk/products/ERP5Type: ./ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Oct 18 19:17:58 CEST 2007
Author: jerome
Date: Thu Oct 18 19:17:57 2007
New Revision: 17046
URL: http://svn.erp5.org?rev=17046&view=rev
Log:
Also reset aq_dynamic when workflow method are added and state variable name is changed.
the comment '# XXX We should also call it whenever we change workflow defition' can be removed from ERP5Type
Modified:
erp5/trunk/products/ERP5Type/ERP5Type.py
erp5/trunk/products/ERP5Type/Interactor.py
erp5/trunk/products/ERP5Type/tests/testERP5Type.py
Modified: erp5/trunk/products/ERP5Type/ERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/ERP5Type.py?rev=17046&r1=17045&r2=17046&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/ERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/ERP5Type.py Thu Oct 18 19:17:57 2007
@@ -723,7 +723,7 @@
if previous_property_sheet_list != self.property_sheet_list or \
base_category_list != self.base_category_list:
from Products.ERP5Type.Base import _aq_reset
- _aq_reset() # XXX We should also call it whenever we change workflow defition
+ _aq_reset()
return result
def reorderActions(self, REQUEST=None):
Modified: erp5/trunk/products/ERP5Type/Interactor.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Interactor.py?rev=17046&r1=17045&r2=17046&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Interactor.py (original)
+++ erp5/trunk/products/ERP5Type/Interactor.py Thu Oct 18 19:17:57 2007
@@ -111,6 +111,22 @@
def install(self):
from Products.CMFCore.WorkflowTool import WorkflowTool
self.on(WorkflowTool.manage_changeWorkflows).doAfter(self.resetAqDynamic)
+
+
+class DCWorkflowInteractor(AqDynamicInteractor):
+ """This interactor reset aq_dynamic method cache whenever a workflow
+ definition changes
+ """
+ def install(self):
+ from Products.DCWorkflow.Transitions import Transitions
+ self.on(Transitions.addTransition).doAfter(self.resetAqDynamic)
+ self.on(Transitions.deleteTransitions).doAfter(self.resetAqDynamic)
+
+ from Products.DCWorkflow.Transitions import TransitionDefinition
+ self.on(TransitionDefinition.setProperties).doAfter(self.resetAqDynamic)
+
+ from Products.DCWorkflow.Variables import Variables
+ self.on(Variables.setStateVar).doAfter(self.resetAqDynamic)
## #
## # Experimental part
@@ -224,6 +240,7 @@
# Install some interactors:
WorkflowToolInteractor().install()
+DCWorkflowInteractor().install()
# This is used in ERP5Form and install method is called in ERP5Form
# Don't install this interactor here.
Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=17046&r1=17045&r2=17046&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py Thu Oct 18 19:17:57 2007
@@ -1692,6 +1692,35 @@
props=dict(chain_Person='delivery_causality_workflow'))
self.assertTrue(hasattr(doc, 'getCausalityState'))
+ def test_aq_reset_on_workflow_method_change(self):
+ doc = self.portal.person_module.newContent(portal_type='Person')
+ ti = self.getTypesTool()['Person']
+ self.portal.portal_workflow.manage_changeWorkflows(
+ default_chain='',
+ props=dict(chain_Person='delivery_causality_workflow'))
+ self.assertTrue(hasattr(doc, 'diverge'))
+
+ wf = self.portal.portal_workflow.delivery_causality_workflow
+ wf.transitions.addTransition('dummy_workflow_method')
+ from Products.DCWorkflow.Transitions import TRIGGER_WORKFLOW_METHOD
+ wf.transitions.dummy_workflow_method.setProperties(
+ title='', new_state_id='', trigger_type=TRIGGER_WORKFLOW_METHOD)
+ self.assertTrue(hasattr(doc, 'dummyWorkflowMethod'))
+
+ wf.transitions.deleteTransitions(['dummy_workflow_method'])
+ self.assertFalse(hasattr(doc, 'dummyWorkflowMethod'))
+
+ def test_aq_reset_on_workflow_state_variable_change(self):
+ doc = self.portal.person_module.newContent(portal_type='Person')
+ ti = self.getTypesTool()['Person']
+ self.portal.portal_workflow.manage_changeWorkflows(
+ default_chain='',
+ props=dict(chain_Person='delivery_causality_workflow'))
+ self.assertTrue(hasattr(doc, 'getCausalityState'))
+ wf = self.portal.portal_workflow.delivery_causality_workflow
+ wf.variables.setStateVar('dummy_state')
+ self.assertTrue(hasattr(doc, 'getDummyState'))
+
# ... other cases should be added here
More information about the Erp5-report
mailing list