mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
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
32 lines
1.2 KiB
Python
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
|