From 4dccd2dda08827dc33740227f82d5fbb27cc3bd2 Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki Date: Wed, 25 Jan 2017 16:49:17 +0100 Subject: [PATCH 1/2] simulation: add 'frozen' state in causality workflow for documents that are no longer simulated. * erp5_base: add 'frozen' state and 'freeze' transition in delivery_causality_workflow. * ERP5/mixin/rule.py: do nothing in _updateSimulation() if causality_state is 'frozen'. --- .../states/building.xml | 1 + .../states/calculating.xml | 1 + .../states/diverged.xml | 1 + .../states/draft.xml | 1 + .../states/frozen.xml | 72 +++++++++++++++++ .../states/solved.xml | 1 + .../states/solving.xml | 1 + .../transitions/freeze.xml | 79 +++++++++++++++++++ product/ERP5/ERP5Defaults.py | 1 + product/ERP5/ERP5Site.py | 8 ++ product/ERP5/mixin/rule.py | 2 + 11 files changed, 168 insertions(+) create mode 100644 bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml create mode 100644 bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml index 4181ab93443..53266c8a2d7 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml @@ -30,6 +30,7 @@ converge diverge + freeze solve_automatically start_building diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml index 26571da5ec0..a3ab6af5841 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml @@ -30,6 +30,7 @@ converge diverge + freeze solve_automatically solve_divergence solve_divergence_action diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml index 5f766037225..688c00d7080 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml @@ -31,6 +31,7 @@ calculate converge diverge + freeze solve_automatically solve_divergence solve_divergence_action diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml index 29db4dd2abc..c6444fc45ce 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml @@ -28,6 +28,7 @@ transitions + freeze start_building diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml new file mode 100644 index 00000000000..b3d62f51690 --- /dev/null +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml @@ -0,0 +1,72 @@ + + + + + + + + + + description + The document is no longer simulated. + + + id + frozen + + + permission_roles + + AAAAAAAAAAI= + + + + title + Frozen + + + transitions + + + + + + type_list + + + + + + + + + + + + + + + data + + + + Add portal content + + + + + + Modify portal content + + + Manager + + + + + + + + + + diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml index 79f1615fb9d..77e75e1876e 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml @@ -31,6 +31,7 @@ calculate converge diverge + freeze solve_automatically start_building diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml index fe57912c1a4..50e8eaf7b54 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml @@ -30,6 +30,7 @@ converge diverge + freeze diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml new file mode 100644 index 00000000000..f85abad44f9 --- /dev/null +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml @@ -0,0 +1,79 @@ + + + + + + + + + + actbox_category + workflow + + + actbox_icon + + + + actbox_name + + + + actbox_url + + + + after_script_name + + + + description + Make the document no longer simulated. + + + guard + + AAAAAAAAAAI= + + + + id + freeze + + + new_state_id + frozen + + + script_name + + + + title + Freeze + + + trigger_type + 2 + + + + + + + + + + + + permissions + + + Modify portal content + + + + + + + diff --git a/product/ERP5/ERP5Defaults.py b/product/ERP5/ERP5Defaults.py index 05c351b7b8f..13a4b0157a4 100644 --- a/product/ERP5/ERP5Defaults.py +++ b/product/ERP5/ERP5Defaults.py @@ -224,3 +224,4 @@ portal_current_inventory_state_list = ('delivered', 'started', 'stopped', 'invoi portal_updatable_amortisation_transaction_state_list = ('draft',) +portal_frozen_causality_state_list = ('frozen',) diff --git a/product/ERP5/ERP5Site.py b/product/ERP5/ERP5Site.py index bcaed78514d..af4c966e9a6 100644 --- a/product/ERP5/ERP5Site.py +++ b/product/ERP5/ERP5Site.py @@ -1287,6 +1287,14 @@ class ERP5Site(FolderMixIn, CMFSite, CacheCookieMixin): return self._getPortalConfiguration( 'portal_updatable_amortisation_transaction_state_list') + security.declareProtected(Permissions.AccessContentsInformation, + 'getPortalFrozenCausalityStateList') + def getPortalFrozenCausalityStateList(self): + """ + Return all causality states where the document is no longer simulated. + """ + return self._getPortalConfiguration('portal_frozen_causality_state_list') + security.declareProtected(Permissions.AccessContentsInformation, 'getPortalGroupedSimulationStateList') def getPortalGroupedSimulationStateList(self): diff --git a/product/ERP5/mixin/rule.py b/product/ERP5/mixin/rule.py index c63c9486519..a823ecca64f 100644 --- a/product/ERP5/mixin/rule.py +++ b/product/ERP5/mixin/rule.py @@ -495,6 +495,8 @@ class SimulableMixin(Base): See _updateSimulation for accepted parameters. """ + if self.getCausalityState() == self.getPortalFrozenCausalityStateList(): + return tv = getTransactionalVariable() key = 'SimulableMixin.updateSimulation', self.getUid() item_list = kw.items() -- 2.30.9 From 9873122a72fa057f83b2576a51173e27d43a0f29 Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki Date: Thu, 26 Jan 2017 10:00:20 +0100 Subject: [PATCH 2/2] fixup! simulation: add 'frozen' state in causality workflow for documents that are no longer simulated. --- product/ERP5/mixin/rule.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product/ERP5/mixin/rule.py b/product/ERP5/mixin/rule.py index a823ecca64f..e5b814e0af8 100644 --- a/product/ERP5/mixin/rule.py +++ b/product/ERP5/mixin/rule.py @@ -495,7 +495,7 @@ class SimulableMixin(Base): See _updateSimulation for accepted parameters. """ - if self.getCausalityState() == self.getPortalFrozenCausalityStateList(): + if self.getCausalityState() in self.getPortalFrozenCausalityStateList(): return tv = getTransactionalVariable() key = 'SimulableMixin.updateSimulation', self.getUid() -- 2.30.9