From 5896610cf1ccfa10d0043759b60b78e703fde979 Mon Sep 17 00:00:00 2001 From: matiasperalta1 Date: Thu, 23 Dec 2021 14:44:51 -0300 Subject: [PATCH] [MIG] web_ir_actions_act_multi: Migration to 15.0 --- .../odoo/addons/web_ir_actions_act_multi | 1 + setup/web_ir_actions_act_multi/setup.py | 6 +++ web_ir_actions_act_multi/__init__.py | 1 + web_ir_actions_act_multi/__manifest__.py | 9 +++- web_ir_actions_act_multi/models/__init__.py | 1 + web_ir_actions_act_multi/models/ir_actions.py | 15 +++++++ .../readme/CONTRIBUTORS.rst | 1 + web_ir_actions_act_multi/readme/USAGE.rst | 5 +-- .../security/ir.model.access.csv | 2 + .../src/js/web_ir_actions_act_multi.esm.js | 23 ++++++++++ .../static/src/js/web_ir_actions_act_multi.js | 43 ------------------- .../views/web_ir_actions_act_multi.xml | 19 -------- 12 files changed, 59 insertions(+), 67 deletions(-) create mode 120000 setup/web_ir_actions_act_multi/odoo/addons/web_ir_actions_act_multi create mode 100644 setup/web_ir_actions_act_multi/setup.py create mode 100644 web_ir_actions_act_multi/models/__init__.py create mode 100644 web_ir_actions_act_multi/models/ir_actions.py create mode 100644 web_ir_actions_act_multi/security/ir.model.access.csv create mode 100644 web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.esm.js delete mode 100644 web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.js delete mode 100644 web_ir_actions_act_multi/views/web_ir_actions_act_multi.xml diff --git a/setup/web_ir_actions_act_multi/odoo/addons/web_ir_actions_act_multi b/setup/web_ir_actions_act_multi/odoo/addons/web_ir_actions_act_multi new file mode 120000 index 000000000..70dacab21 --- /dev/null +++ b/setup/web_ir_actions_act_multi/odoo/addons/web_ir_actions_act_multi @@ -0,0 +1 @@ +../../../../web_ir_actions_act_multi \ No newline at end of file diff --git a/setup/web_ir_actions_act_multi/setup.py b/setup/web_ir_actions_act_multi/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/web_ir_actions_act_multi/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +) diff --git a/web_ir_actions_act_multi/__init__.py b/web_ir_actions_act_multi/__init__.py index e69de29bb..0650744f6 100644 --- a/web_ir_actions_act_multi/__init__.py +++ b/web_ir_actions_act_multi/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/web_ir_actions_act_multi/__manifest__.py b/web_ir_actions_act_multi/__manifest__.py index 86e063ff7..869e38d50 100644 --- a/web_ir_actions_act_multi/__manifest__.py +++ b/web_ir_actions_act_multi/__manifest__.py @@ -8,11 +8,16 @@ "name": "Web Actions Multi", "summary": "Enables triggering of more than one action on ActionManager", "category": "Web", - "version": "13.0.1.0.0", + "version": "15.0.1.0.0", "license": "LGPL-3", "author": "Modoolar, " "CorporateHub, " "Odoo Community Association (OCA)", "website": "https://github.com/OCA/web", "depends": ["web"], - "data": ["views/web_ir_actions_act_multi.xml"], + "data": ["security/ir.model.access.csv"], + "assets": { + "web.assets_backend": [ + "web_ir_actions_act_multi/static/src/**/*.esm.js", + ], + }, "installable": True, } diff --git a/web_ir_actions_act_multi/models/__init__.py b/web_ir_actions_act_multi/models/__init__.py new file mode 100644 index 000000000..16285e5e1 --- /dev/null +++ b/web_ir_actions_act_multi/models/__init__.py @@ -0,0 +1 @@ +from . import ir_actions diff --git a/web_ir_actions_act_multi/models/ir_actions.py b/web_ir_actions_act_multi/models/ir_actions.py new file mode 100644 index 000000000..123d625e0 --- /dev/null +++ b/web_ir_actions_act_multi/models/ir_actions.py @@ -0,0 +1,15 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models + + +class IrActionsActMulti(models.Model): + _name = "ir.actions.act_multi" + _description = "Action Mulit" + _inherit = "ir.actions.actions" + _table = "ir_actions" + + type = fields.Char(default="ir.actions.act_multi") + + def _get_readable_fields(self): + return super()._get_readable_fields() | {"actions"} diff --git a/web_ir_actions_act_multi/readme/CONTRIBUTORS.rst b/web_ir_actions_act_multi/readme/CONTRIBUTORS.rst index 81884a60f..0fe7835e0 100644 --- a/web_ir_actions_act_multi/readme/CONTRIBUTORS.rst +++ b/web_ir_actions_act_multi/readme/CONTRIBUTORS.rst @@ -5,3 +5,4 @@ * Alexey Pelykh * Manuel Calero - Tecnativa +* Matias Peralta, Juan Rivero - Adhoc diff --git a/web_ir_actions_act_multi/readme/USAGE.rst b/web_ir_actions_act_multi/readme/USAGE.rst index 7fe7ca500..eadf01451 100644 --- a/web_ir_actions_act_multi/readme/USAGE.rst +++ b/web_ir_actions_act_multi/readme/USAGE.rst @@ -2,13 +2,12 @@ To use this functionality you need to return following action with list of actio .. code-block:: python - @api.multi - def foo(): + def foo(self): self.ensure_one() return { 'type': 'ir.actions.act_multi', 'actions': [ {'type': 'ir.actions.act_window_close'}, - {'type': 'ir.actions.act_view_reload'}, + {'type': 'ir.actions.client', 'tag': 'reload'}, ] } diff --git a/web_ir_actions_act_multi/security/ir.model.access.csv b/web_ir_actions_act_multi/security/ir.model.access.csv new file mode 100644 index 000000000..b0a872960 --- /dev/null +++ b/web_ir_actions_act_multi/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +crud_ir_actions_act_multi,access_ir_actions_act_multi,model_ir_actions_act_multi,,1,1,1,1 diff --git a/web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.esm.js b/web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.esm.js new file mode 100644 index 000000000..74bad577e --- /dev/null +++ b/web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.esm.js @@ -0,0 +1,23 @@ +/** @odoo-module **/ + +import {registry} from "@web/core/registry"; + +/** + * Handle 'ir.actions.act_multi' action + * @param {object} action see _handleAction() parameters + * @returns {$.Promise} + */ + +async function executeMultiAction({env, action}) { + return action.actions + .map((item) => { + return () => { + return env.services.action.doAction(item); + }; + }) + .reduce((prev, cur) => { + return prev.then(cur); + }, Promise.resolve()); +} + +registry.category("action_handlers").add("ir.actions.act_multi", executeMultiAction); diff --git a/web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.js b/web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.js deleted file mode 100644 index 5905ebca0..000000000 --- a/web_ir_actions_act_multi/static/src/js/web_ir_actions_act_multi.js +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2017 - 2018 Modoolar -// Copyright 2018 Brainbean Apps -// Copyright 2020 Manuel Calero - Tecnativa -// License LGPLv3.0 or later (https://www.gnu.org/licenses/lgpl-3.0.en.html). - -odoo.define("web_ir_actions_act_multi.ir_actions_act_multi", function(require) { - "use strict"; - - var ActionManager = require("web.ActionManager"); - - ActionManager.include({ - /** - * Intercept action handling to detect extra action type - * @override - */ - _handleAction: function(action, options) { - if (action.type === "ir.actions.act_multi") { - return this._executeMultiAction(action, options); - } - return this._super.apply(this, arguments); - }, - - /** - * Handle 'ir.actions.act_multi' action - * @param {Object} action see _handleAction() parameters - * @param {Object} options see _handleAction() parameters - * @returns {$.Promise} - */ - _executeMultiAction: function(action, options) { - const self = this; - - return action.actions - .map(item => { - return () => { - return self._handleAction(item, options); - }; - }) - .reduce((prev, cur) => { - return prev.then(cur); - }, Promise.resolve()); - }, - }); -}); diff --git a/web_ir_actions_act_multi/views/web_ir_actions_act_multi.xml b/web_ir_actions_act_multi/views/web_ir_actions_act_multi.xml deleted file mode 100644 index ada8cb618..000000000 --- a/web_ir_actions_act_multi/views/web_ir_actions_act_multi.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - -