From d10eab5dbbc4dec2bc80c549799c0be7a37926e0 Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Fri, 7 May 2021 14:09:11 +0200 Subject: [PATCH] Add module base_import_module_group --- base_import_module_group/README.rst | 0 base_import_module_group/__init__.py | 2 ++ base_import_module_group/__manifest__.py | 21 +++++++++++++++++++ base_import_module_group/models/__init__.py | 1 + base_import_module_group/models/ir_module.py | 20 ++++++++++++++++++ .../readme/CONTRIBUTORS.rst | 2 ++ .../readme/DESCRIPTION.rst | 2 ++ .../security/res_groups.xml | 10 +++++++++ .../views/import_module_group.xml | 11 ++++++++++ 9 files changed, 69 insertions(+) create mode 100644 base_import_module_group/README.rst create mode 100644 base_import_module_group/__init__.py create mode 100644 base_import_module_group/__manifest__.py create mode 100644 base_import_module_group/models/__init__.py create mode 100644 base_import_module_group/models/ir_module.py create mode 100644 base_import_module_group/readme/CONTRIBUTORS.rst create mode 100644 base_import_module_group/readme/DESCRIPTION.rst create mode 100644 base_import_module_group/security/res_groups.xml create mode 100644 base_import_module_group/views/import_module_group.xml diff --git a/base_import_module_group/README.rst b/base_import_module_group/README.rst new file mode 100644 index 000000000..e69de29bb diff --git a/base_import_module_group/__init__.py b/base_import_module_group/__init__.py new file mode 100644 index 000000000..899bcc97f --- /dev/null +++ b/base_import_module_group/__init__.py @@ -0,0 +1,2 @@ +from . import models + diff --git a/base_import_module_group/__manifest__.py b/base_import_module_group/__manifest__.py new file mode 100644 index 000000000..73e9e51b5 --- /dev/null +++ b/base_import_module_group/__manifest__.py @@ -0,0 +1,21 @@ +# Copyright 2020 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +{ + "name": "Import Module Group", + "summary": "Restrict module importation to specific group", + "version": "12.0.1.0.0", + "category": "Uncategorized", + "website": "https://github.com/OCA/server-tools", + "author": "Camptocamp, Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + "auto-install": True, + "depends": [ + "base_import_module", + ], + "data": [ + "security/res_groups.xml", + "views/import_module_group.xml", + ], +} diff --git a/base_import_module_group/models/__init__.py b/base_import_module_group/models/__init__.py new file mode 100644 index 000000000..10f9b8b59 --- /dev/null +++ b/base_import_module_group/models/__init__.py @@ -0,0 +1 @@ +from . import ir_module diff --git a/base_import_module_group/models/ir_module.py b/base_import_module_group/models/ir_module.py new file mode 100644 index 000000000..9e0632222 --- /dev/null +++ b/base_import_module_group/models/ir_module.py @@ -0,0 +1,20 @@ +# Copyright 2020 Camptocamp SA +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) +from odoo import _, api, models +from odoo.exceptions import AccessError + + +class IrModule(models.Model): + + _inherit = 'ir.module.module' + + @api.multi + def _import_module(self, module, path, force=False): + group_xid = 'import_module_group.group_module_import' + if not self.env.user.has_group(group_xid): + group = self.env.ref(group_xid) + raise AccessError( + _("Only users with group %s are allowed to import modules") + % group.name + ) + return super()._import_module(module, path, force=force) diff --git a/base_import_module_group/readme/CONTRIBUTORS.rst b/base_import_module_group/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..c20bbd5f5 --- /dev/null +++ b/base_import_module_group/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Akim Juillerat + diff --git a/base_import_module_group/readme/DESCRIPTION.rst b/base_import_module_group/readme/DESCRIPTION.rst new file mode 100644 index 000000000..00680df10 --- /dev/null +++ b/base_import_module_group/readme/DESCRIPTION.rst @@ -0,0 +1,2 @@ +This module adds a security group to restrict importation of users +to members of this specific group. diff --git a/base_import_module_group/security/res_groups.xml b/base_import_module_group/security/res_groups.xml new file mode 100644 index 000000000..0724b5d66 --- /dev/null +++ b/base_import_module_group/security/res_groups.xml @@ -0,0 +1,10 @@ + + + + Allow importation of modules + + + + + + diff --git a/base_import_module_group/views/import_module_group.xml b/base_import_module_group/views/import_module_group.xml new file mode 100644 index 000000000..1e2a9bb3f --- /dev/null +++ b/base_import_module_group/views/import_module_group.xml @@ -0,0 +1,11 @@ + + + + Import Module + base.import.module + form + form + new + + +