From a03acf071496ee7d796d2a6eda991d6bc16bf6d4 Mon Sep 17 00:00:00 2001 From: red Date: Wed, 12 Mar 2025 18:10:27 +0800 Subject: [PATCH 1/2] [ADD] spp_hide_menus_base: added module for base hide menu --- spp_hide_menus_base/__init__.py | 1 + spp_hide_menus_base/__manifest__.py | 25 +++++++ spp_hide_menus_base/models/__init__.py | 1 + spp_hide_menus_base/models/hide_menu.py | 40 +++++++++++ spp_hide_menus_base/pyproject.toml | 3 + .../security/ir.model.access.csv | 2 + spp_hide_menus_base/security/security.xml | 8 +++ spp_hide_menus_base/views/hide_menu_view.xml | 71 +++++++++++++++++++ 8 files changed, 151 insertions(+) create mode 100644 spp_hide_menus_base/__init__.py create mode 100644 spp_hide_menus_base/__manifest__.py create mode 100644 spp_hide_menus_base/models/__init__.py create mode 100644 spp_hide_menus_base/models/hide_menu.py create mode 100644 spp_hide_menus_base/pyproject.toml create mode 100644 spp_hide_menus_base/security/ir.model.access.csv create mode 100644 spp_hide_menus_base/security/security.xml create mode 100644 spp_hide_menus_base/views/hide_menu_view.xml diff --git a/spp_hide_menus_base/__init__.py b/spp_hide_menus_base/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/spp_hide_menus_base/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/spp_hide_menus_base/__manifest__.py b/spp_hide_menus_base/__manifest__.py new file mode 100644 index 000000000..140caad99 --- /dev/null +++ b/spp_hide_menus_base/__manifest__.py @@ -0,0 +1,25 @@ +# Part of OpenSPP. See LICENSE file for full copyright and licensing details. + + +{ + "name": "Hide Non-OpenSPP Menus: Base", + "category": "OpenSPP", + "version": "17.0.1.3.0", + "sequence": 1, + "author": "OpenSPP.org", + "website": "https://github.com/OpenSPP/openspp-modules", + "license": "LGPL-3", + "maintainers": ["reichie020212"], + "depends": ["base"], + "data": [ + "security/ir.model.access.csv", + "security/security.xml", + "views/hide_menu_view.xml", + ], + "assets": {}, + "demo": [], + "images": [], + "application": True, + "installable": True, + "auto_install": False, +} diff --git a/spp_hide_menus_base/models/__init__.py b/spp_hide_menus_base/models/__init__.py new file mode 100644 index 000000000..f9646e257 --- /dev/null +++ b/spp_hide_menus_base/models/__init__.py @@ -0,0 +1 @@ +from . import hide_menu diff --git a/spp_hide_menus_base/models/hide_menu.py b/spp_hide_menus_base/models/hide_menu.py new file mode 100644 index 000000000..172c2349d --- /dev/null +++ b/spp_hide_menus_base/models/hide_menu.py @@ -0,0 +1,40 @@ +# Part of OpenSPP. See LICENSE file for full copyright and licensing details. + +import logging + +from odoo import fields, models + +_logger = logging.getLogger(__name__) + + +class OpenSPPHideMenu(models.Model): + _name = "spp.hide.menu" + _description = "Hide Menu Configuration" + + name = fields.Many2one("ir.ui.menu", required=True) + state = fields.Selection( + [("show", "Show"), ("hide", "Hidden")], + default="show", + ) + default_groups_id = fields.Many2many("res.groups") + + def hide_menu(self, menu_id=None): + record = self + if menu_id: + record = self.browse(menu_id) + for rec in record: + if rec.state == "show" and rec.name: + show_non_openspp_group = [(6, 0, [self.env.ref("spp_hide_menus_base.show_non_openspp_menu_group").id])] + rec.default_groups_id = rec.name.groups_id + rec.name.write( + { + "groups_id": show_non_openspp_group, + } + ) + rec.state = "hide" + + def show_menu(self): + for rec in self: + if rec.state == "hide" and rec.name: + rec.name.groups_id = rec.default_groups_id + rec.state = "show" diff --git a/spp_hide_menus_base/pyproject.toml b/spp_hide_menus_base/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/spp_hide_menus_base/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/spp_hide_menus_base/security/ir.model.access.csv b/spp_hide_menus_base/security/ir.model.access.csv new file mode 100644 index 000000000..b7fe00eb0 --- /dev/null +++ b/spp_hide_menus_base/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 +spp_hide_menu_admin,Hide Menu Configuration Admin Access,spp_hide_menus_base.model_spp_hide_menu,base.group_system,1,1,1,1 diff --git a/spp_hide_menus_base/security/security.xml b/spp_hide_menus_base/security/security.xml new file mode 100644 index 000000000..2bcaf3c1b --- /dev/null +++ b/spp_hide_menus_base/security/security.xml @@ -0,0 +1,8 @@ + + + + + Show Non-OpenSPP Menu + + + diff --git a/spp_hide_menus_base/views/hide_menu_view.xml b/spp_hide_menus_base/views/hide_menu_view.xml new file mode 100644 index 000000000..75b406bcf --- /dev/null +++ b/spp_hide_menus_base/views/hide_menu_view.xml @@ -0,0 +1,71 @@ + + + view_spp_hide_menu_tree + spp.hide.menu + 1 + + + + +