From 41c9008087a569ddd683d052d3f5a3a6f2483956 Mon Sep 17 00:00:00 2001 From: matiasperalta1 Date: Mon, 12 Sep 2022 13:56:46 -0300 Subject: [PATCH] [MIG] report_substitute: Migration to 15.0 --- report_substitute/__manifest__.py | 8 +++-- report_substitute/models/ir_actions_report.py | 12 ++++--- .../ir_actions_report_substitution_rule.py | 5 +-- .../static/src/js/action_manager.esm.js | 29 +++++++++++++++ .../static/src/js/action_manager.js | 35 ------------------- report_substitute/views/assets_backend.xml | 11 ------ .../wizards/mail_compose_message.py | 4 +-- 7 files changed, 48 insertions(+), 56 deletions(-) create mode 100644 report_substitute/static/src/js/action_manager.esm.js delete mode 100644 report_substitute/static/src/js/action_manager.js delete mode 100644 report_substitute/views/assets_backend.xml diff --git a/report_substitute/__manifest__.py b/report_substitute/__manifest__.py index c0f230deeb..9338dcefc1 100644 --- a/report_substitute/__manifest__.py +++ b/report_substitute/__manifest__.py @@ -6,16 +6,20 @@ "summary": """ This module allows to create substitution rules for report actions. """, - "version": "13.0.1.0.0", + "version": "15.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV," "Odoo Community Association (OCA)", "website": "https://github.com/OCA/reporting-engine", "depends": ["base", "mail"], "data": [ "security/ir_actions_report_substitution_rule.xml", - "views/assets_backend.xml", "views/ir_actions_report.xml", ], "demo": ["demo/action_report.xml"], + "assets": { + "web.assets_backend": [ + "report_substitute/static/src/js/action_manager.esm.js", + ], + }, "maintainers": ["sbejaoui"], } diff --git a/report_substitute/models/ir_actions_report.py b/report_substitute/models/ir_actions_report.py index 94895b7169..375f37886d 100644 --- a/report_substitute/models/ir_actions_report.py +++ b/report_substitute/models/ir_actions_report.py @@ -10,8 +10,8 @@ class IrActionReport(models.Model): _inherit = "ir.actions.report" action_report_substitution_rule_ids = fields.One2many( - comodel_name="ir.actions.report.substitution.rule", - inverse_name="action_report_id", + "ir.actions.report.substitution.rule", + "action_report_id", string="Substitution Rules", ) @@ -47,11 +47,12 @@ def get_substitution_report_action(self, action, active_ids): action_report.model, active_ids ) action.update(action_report.read()[0]) + return action - def render(self, res_ids, data=None): + def _render(self, res_ids, data=None): substitution_report = self.get_substitution_report(res_ids) - return super(IrActionReport, substitution_report).render(res_ids, data) + return super(IrActionReport, substitution_report)._render(res_ids, data) def report_action(self, docids, data=None, config=True): if docids: @@ -66,3 +67,6 @@ def report_action(self, docids, data=None, config=True): docids, data, config ) return super().report_action(docids, data, config) + + def get_action_report_substitution_rule_ids(self): + return self.action_report_substitution_rule_ids.ids diff --git a/report_substitute/models/ir_actions_report_substitution_rule.py b/report_substitute/models/ir_actions_report_substitution_rule.py index 65f8f3fb18..7320d533f3 100644 --- a/report_substitute/models/ir_actions_report_substitution_rule.py +++ b/report_substitute/models/ir_actions_report_substitution_rule.py @@ -19,7 +19,7 @@ class ActionsReportSubstitutionRule(models.Model): ondelete="cascade", ) model = fields.Char(related="action_report_id.model", store=True) - domain = fields.Char(string="Domain", required=True, default="[]") + domain = fields.Char(required=True, default="[]") substitution_action_report_id = fields.Many2one( comodel_name="ir.actions.report", string="Substitution Report Action", @@ -37,7 +37,8 @@ def _check_infinite_loop(original_report, substitution_report): substitution_rule ) in substitution_report.action_report_substitution_rule_ids: _check_infinite_loop( - original_report, substitution_rule.substitution_action_report_id, + original_report, + substitution_rule.substitution_action_report_id, ) for rec in self: diff --git a/report_substitute/static/src/js/action_manager.esm.js b/report_substitute/static/src/js/action_manager.esm.js new file mode 100644 index 0000000000..cff852c708 --- /dev/null +++ b/report_substitute/static/src/js/action_manager.esm.js @@ -0,0 +1,29 @@ +/** @odoo-module **/ + +import {registry} from "@web/core/registry"; + +registry + .category("ir.actions.report handlers") + .add("sustitution_handler", async function (action, options, env) { + const orm = env.services.orm; + const action_report_substitution_rule_ids = await orm.call( + "ir.actions.report", + "get_action_report_substitution_rule_ids", + [action.id] + ); + if ( + action.type === "ir.actions.report" && + action.context.active_ids && + action_report_substitution_rule_ids && + action_report_substitution_rule_ids.length !== 0 + ) { + var active_ids = action.context.active_ids; + const substitution = await orm.call( + "ir.actions.report", + "get_substitution_report_action", + [action, active_ids] + ); + Object.assign(action, substitution); + } + return Promise.resolve(false); + }); diff --git a/report_substitute/static/src/js/action_manager.js b/report_substitute/static/src/js/action_manager.js deleted file mode 100644 index 1c244bb485..0000000000 --- a/report_substitute/static/src/js/action_manager.js +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2019 ACSONE SA/NV -// License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -odoo.define("report_substitute.action_report_substitute", function(require) { - "use strict"; - - var ActionManager = require("web.ActionManager"); - - ActionManager.include({ - /** - * Intercept action handling substitute the report action - * @override - */ - - _handleAction: function(action, options) { - if ( - action.type === "ir.actions.report" && - action.context.active_ids && - action.action_report_substitution_rule_ids && - action.action_report_substitution_rule_ids !== 0 - ) { - var active_ids = action.context.active_ids; - var self = this; - var _super = this._super; - return this._rpc({ - model: "ir.actions.report", - method: "get_substitution_report_action", - args: [action, active_ids], - }).then(function(substitution_action) { - return _super.apply(self, [substitution_action, options]); - }); - } - return this._super.apply(this, arguments); - }, - }); -}); diff --git a/report_substitute/views/assets_backend.xml b/report_substitute/views/assets_backend.xml deleted file mode 100644 index 4fc56b88f1..0000000000 --- a/report_substitute/views/assets_backend.xml +++ /dev/null @@ -1,11 +0,0 @@ - - -