diff --git a/trytond/ir/ui/menu.py b/trytond/ir/ui/menu.py index 5a5a0e55fe..5a5e6454ef 100644 --- a/trytond/ir/ui/menu.py +++ b/trytond/ir/ui/menu.py @@ -4,6 +4,7 @@ from itertools import groupby from trytond.model import ModelView, ModelSQL, fields, sequence_ordered from trytond.transaction import Transaction +from trytond.tools import grouped_slice from trytond.pool import Pool from trytond.rpc import RPC @@ -178,10 +179,12 @@ class UIMenu(sequence_ordered(), ModelSQL, ModelView): return menus if menus: - parent_ids = [x.parent.id for x in menus if x.parent] - parents = cls.search([ - ('id', 'in', parent_ids), - ]) + parent_ids = {x.parent.id for x in menus if x.parent} + parents = set() + for sub_parent_ids in grouped_slice(parent_ids): + parents.update(cls.search([ + ('id', 'in', list(sub_parent_ids)), + ])) menus = [x for x in menus if (x.parent and x.parent in parents) or not x.parent]