Files
web/web_responsive/models/ir_ui_menu.py
Pedro M. Baeza 6269ed0f45 [FIX] web_responsive: Filter properly menus on AppDrawer search
The filtering that is done on the menus by upstream doesn't take into
account the visibility of their ancestors to decide if the menu is
visible or not, which is needed for the AppDrawer menu search.

TT45078
2023-09-16 13:01:27 +02:00

32 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, models
class IrUiMenu(models.Model):
_inherit = 'ir.ui.menu'
@api.model
def search(self, args, offset=0, limit=None, order=None, count=False):
"""The filtering that is done on the menus by upstream doesn't take into account
the visibility of their ancestors to decide if the menu is visible or not, which
is needed for the AppDrawer menu search.
"""
menus = super(IrUiMenu, self).search(
args, offset=offset, limit=limit, order=order, count=count
)
if menus and not count and self.env.context.get("responsive_search"):
accesible_menus = self.env["ir.ui.menu"]
full_menus = self.with_context(responsive_search=False).search([])
for menu in menus:
add = True
parent_menu = menu.parent_id
while parent_menu:
if parent_menu not in full_menus:
add = False
break
parent_menu = parent_menu.parent_id
if add:
accesible_menus += menu
menus = accesible_menus
return menus