From 6f87dc4ac524a4acc504091261e2ebcce68e76ec Mon Sep 17 00:00:00 2001 From: percyhibou Date: Tue, 11 Oct 2022 17:13:16 +0000 Subject: [PATCH] [IMP] project_exception, project_acceptance: improve exception rule definition, add field requires_acceptance to task_type_edit view. H11043 --- project_acceptance/data/project_exception_data.xml | 2 +- project_acceptance/views/project_views.xml | 13 ++++++++++++- project_exception/demo/project_exception_demo.xml | 4 ++-- project_exception/models/project.py | 12 +++--------- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/project_acceptance/data/project_exception_data.xml b/project_acceptance/data/project_exception_data.xml index a491e291..01d54642 100644 --- a/project_acceptance/data/project_exception_data.xml +++ b/project_acceptance/data/project_exception_data.xml @@ -6,7 +6,7 @@ When task stage changes and requires acceptance and task acceptance is blank 50 project.task - if not task.task_acceptance and task.stage_id.requires_acceptance: failed=True + failed = (self.stage_id.id != self._context.get('newVals', {}).get('stage_id')) and not self.task_acceptance and self.stage_id.requires_acceptance diff --git a/project_acceptance/views/project_views.xml b/project_acceptance/views/project_views.xml index 36c03fb3..47390e5d 100644 --- a/project_acceptance/views/project_views.xml +++ b/project_acceptance/views/project_views.xml @@ -12,7 +12,7 @@ - + project.task.type.tree.inherit.exception project.task.type @@ -23,4 +23,15 @@ + + project.task.type.inherit.form + project.task.type + + + + + + + + diff --git a/project_exception/demo/project_exception_demo.xml b/project_exception/demo/project_exception_demo.xml index 2dc5644d..ef1277d2 100644 --- a/project_exception/demo/project_exception_demo.xml +++ b/project_exception/demo/project_exception_demo.xml @@ -6,8 +6,8 @@ No Project Id on task 50 project.task - if not task.project_id.name: failed=True - + failed = (self.stage_id.id != self._context.get('newVals', {}).get('stage_id')) and not self.project_id + diff --git a/project_exception/models/project.py b/project_exception/models/project.py index aadf60e9..7a8635f7 100644 --- a/project_exception/models/project.py +++ b/project_exception/models/project.py @@ -31,12 +31,6 @@ class Task(models.Model): res.detect_exceptions() return res - @api.model - def _exception_rule_eval_context(self, rec): - res = super(Task, self)._exception_rule_eval_context(rec) - res['task'] = rec - return res - @api.model def _reverse_field(self): return 'task_ids' @@ -44,7 +38,7 @@ class Task(models.Model): def write(self, vals): if not vals.get('ignore_exception') and 'stage_id' in vals and 'project_id' not in vals: for task in self: - if task.detect_exceptions(): + if task.with_context(newVals=vals).detect_exceptions(): raise UserError(_('Exceptions were detected.')) res = super().write(vals) self.detect_exceptions() @@ -56,7 +50,7 @@ class Task(models.Model): def detect_exceptions(self): res = False - if not self._context.get("detect_exceptions"): - self = self.with_context(detect_exceptions=True) + if not self._context.get("skip_detect_exceptions"): + self = self.with_context(skip_detect_exceptions=True) res = super(Task, self).detect_exceptions() return res