From b069d1cb9ad9011f756a7cc29723eeec2c8e6bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Gil=20Sorribes?= Date: Thu, 30 Sep 2021 08:36:01 +0200 Subject: [PATCH] [12.0][IMP] base_tier_validation: allow selecting tier definition upon validation request --- base_tier_validation/__manifest__.py | 1 + .../models/tier_validation.py | 37 +++++++++++++++++++ base_tier_validation/wizard/__init__.py | 1 + .../tier_definition_selection_wizard.py | 29 +++++++++++++++ ...tier_definition_selection_wizard_views.xml | 25 +++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 base_tier_validation/wizard/tier_definition_selection_wizard.py create mode 100644 base_tier_validation/wizard/tier_definition_selection_wizard_views.xml diff --git a/base_tier_validation/__manifest__.py b/base_tier_validation/__manifest__.py index a4d94b2cdc..8eafca98a0 100644 --- a/base_tier_validation/__manifest__.py +++ b/base_tier_validation/__manifest__.py @@ -23,6 +23,7 @@ "views/tier_review_view.xml", "views/assets_backend.xml", "wizard/comment_wizard_view.xml", + "wizard/tier_definition_selection_wizard_views.xml", ], 'qweb': [ 'static/src/xml/systray.xml', diff --git a/base_tier_validation/models/tier_validation.py b/base_tier_validation/models/tier_validation.py index e56090f0e0..d7b505a70a 100644 --- a/base_tier_validation/models/tier_validation.py +++ b/base_tier_validation/models/tier_validation.py @@ -374,6 +374,43 @@ def request_validation(self): self._notify_review_requested(created_trs) return created_trs + def action_request_custom_validation(self): + wizard = self.env.ref( + "base_tier_validation.view_tier_validation_selection_wizard") + return { + "name": _("Select Custom Validation"), + "type": "ir.actions.act_window", + "view_mode": "form", + "res_model": "tier.validation.selection.wizard", + "views": [(wizard.id, "form")], + "view_id": wizard.id, + "target": "new", + "context": { + "default_res_id": self.id, + "default_res_model": self._name, + }, + } + + @api.multi + def request_custom_validation(self, tier_definitions): + tr_obj = created_trs = self.env['tier.review'] + for rec in self: + if getattr(rec, self._state_field) in self._state_from: + if rec.need_validation: + sequence = 0 + for td in tier_definitions: + sequence += 1 + created_trs += tr_obj.create({ + 'model': self._name, + 'res_id': rec.id, + 'definition_id': td.id, + 'sequence': sequence, + 'requested_by': self.env.uid, + }) + self._update_counter() + self._notify_review_requested(created_trs) + return created_trs + @api.multi def restart_validation(self): for rec in self: diff --git a/base_tier_validation/wizard/__init__.py b/base_tier_validation/wizard/__init__.py index 92bd0df50b..25d4b87651 100644 --- a/base_tier_validation/wizard/__init__.py +++ b/base_tier_validation/wizard/__init__.py @@ -1,3 +1,4 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from . import comment_wizard +from . import tier_definition_selection_wizard diff --git a/base_tier_validation/wizard/tier_definition_selection_wizard.py b/base_tier_validation/wizard/tier_definition_selection_wizard.py new file mode 100644 index 0000000000..e53ee9583d --- /dev/null +++ b/base_tier_validation/wizard/tier_definition_selection_wizard.py @@ -0,0 +1,29 @@ +# Copyright 2021 ForgeFlow S.L. +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models, _ +from odoo.exceptions import ValidationError + + +class TierDefinitionSelectionWizard(models.TransientModel): + _name = "tier.validation.selection.wizard" + _description = "Tier Definition Selection Wizard" + + res_model = fields.Char() + res_id = fields.Integer() + + definition_ids = fields.Many2many( + comodel_name="tier.definition", + string="Tier Definitions", + help="Select the definitions to apply for the current's record validation." + ) + + @api.multi + def request_validation(self): + self.ensure_one() + rec = self.env[self.res_model].browse(self.res_id) + if not self.definition_ids: + raise ValidationError(_( + "You need to select at least one Tier Definition." + )) + rec.request_custom_validation(self.definition_ids) diff --git a/base_tier_validation/wizard/tier_definition_selection_wizard_views.xml b/base_tier_validation/wizard/tier_definition_selection_wizard_views.xml new file mode 100644 index 0000000000..22a8899c45 --- /dev/null +++ b/base_tier_validation/wizard/tier_definition_selection_wizard_views.xml @@ -0,0 +1,25 @@ + + + + + + Tier Validation Selection Wizard + tier.validation.selection.wizard + form + +
+ + + + +
+
+
+ +