diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 4b3cf333cbc..a51bdcc8726 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -162,11 +162,7 @@ class Groups(models.Model): def _search_full_name(self, operator, operand): lst = True if isinstance(operand, bool): - domains = [[('name', operator, operand)], [('category_id.name', operator, operand)]] - if operator in expression.NEGATIVE_TERM_OPERATORS == (not operand): - return expression.AND(domains) - else: - return expression.OR(domains) + return [[('name', operator, operand)]] if isinstance(operand, str): lst = False operand = [operand] @@ -176,7 +172,9 @@ class Groups(models.Model): group_name = values.pop().strip() category_name = values and '/'.join(values).strip() or group_name group_domain = [('name', operator, lst and [group_name] or group_name)] - category_domain = [('category_id.name', operator, lst and [category_name] or category_name)] + category_ids = self.env['ir.module.category'].sudo()._search( + [('name', operator, [category_name] if lst else category_name)]) + category_domain = [('category_id', 'in', category_ids)] if operator in expression.NEGATIVE_TERM_OPERATORS and not values: category_domain = expression.OR([category_domain, [('category_id', '=', False)]]) if (operator in expression.NEGATIVE_TERM_OPERATORS) == (not values):