Skip to content

Commit 1897d3b

Browse files
committedJan 10, 2024
16.0[IMP]document_page: menu_parent_id context domain of menu creation
1 parent 77fead8 commit 1897d3b

File tree

5 files changed

+47
-1
lines changed

5 files changed

+47
-1
lines changed
 

‎document_page/README.rst

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ Trobz
9393
* `Sygel <https://www.sygel.es>`_:
9494

9595
* Ángel García de la Chica Herrera
96+
* Alberto Martínez Rodríguez
9697

9798
Other credits
9899
~~~~~~~~~~~~~

‎document_page/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22

33
from . import document_page
44
from . import document_page_history
5+
from . import ir_ui_menu

‎document_page/models/ir_ui_menu.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Copyright 2024 Alberto Martínez <alberto.martinez@sygel.es>
2+
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3+
4+
from odoo import models
5+
6+
7+
class IrUiMenu(models.Model):
8+
_inherit = "ir.ui.menu"
9+
10+
def _visible_menu_ids(self, debug=False):
11+
visible_ids = super()._visible_menu_ids(debug)
12+
if self._context.get("ir.ui.menu.authorized_list"):
13+
# Add the authorized by groups menus that does not have an action
14+
menus = (
15+
self.with_context(**{"ir.ui.menu.full_list": True}).search([]).sudo()
16+
)
17+
groups = (
18+
self.env.user.groups_id
19+
if not debug
20+
else self.env.user.groups_id - self.env.ref("base.group_no_one")
21+
)
22+
authorized_menus = menus.filtered(
23+
lambda m: not m.groups_id or m.groups_id and groups
24+
)
25+
authorized_folder_menus = authorized_menus.filtered(lambda m: not m.action)
26+
visible_ids = visible_ids.union(authorized_folder_menus.ids)
27+
return visible_ids

‎document_page/tests/test_document_page_create_menu.py

+14
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,17 @@ def test_page_menu_creation(self):
2727
).default_get(fields_list)
2828

2929
self.assertEqual(res["menu_name"], "Odoo 15.0 Functional Demo")
30+
31+
def test_page_menu_parent_id_context(self):
32+
"""Test page menu parent_id context."""
33+
menu_parent = self.env["ir.ui.menu"].create({"name": "Test Folder Menu"})
34+
context_results = (
35+
self.env["ir.ui.menu"]
36+
.with_context(**{"ir.ui.menu.authorized_list": True})
37+
.search([("id", "=", menu_parent.id)])
38+
)
39+
no_context_results = self.env["ir.ui.menu"].search(
40+
[("id", "=", menu_parent.id)]
41+
)
42+
self.assertEqual(context_results[:1].id, menu_parent.id)
43+
self.assertEqual(any(no_context_results), False)

‎document_page/wizard/document_page_create_menu.xml

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
<form>
99
<group string="Menu Information">
1010
<field name="menu_name" />
11-
<field name="menu_parent_id" />
11+
<field
12+
name="menu_parent_id"
13+
context="{'ir.ui.menu.authorized_list': True}"
14+
/>
1215
</group>
1316
<footer>
1417
<button

0 commit comments

Comments
 (0)
Please sign in to comment.