From ded636eae1a0294b25b589821e9779f56a1ce21a Mon Sep 17 00:00:00 2001 From: SEINLET Nicolas Date: Tue, 11 Apr 2017 09:27:58 +0200 Subject: [PATCH] [FIX] ir.rule: use rules at most once (#15843) When a user belongs to multiple groups, and an ir.rule is applicable for some of them, the rule is added multiple times in the domain. Just do it once. This makes the query shorter and easier to debug. --- openerp/addons/base/ir/ir_rule.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/ir/ir_rule.py b/openerp/addons/base/ir/ir_rule.py index c55ad1d5dcd..2b1c0aadaf0 100644 --- a/openerp/addons/base/ir/ir_rule.py +++ b/openerp/addons/base/ir/ir_rule.py @@ -129,9 +129,8 @@ class ir_rule(osv.osv): # read 'domain' as UID to have the correct eval context for the rule. rule_domain = self.read(cr, uid, [rule.id], ['domain'])[0]['domain'] dom = expression.normalize_domain(rule_domain) - for group in rule.groups: - if group in user.groups_id: - group_domains.setdefault(group, []).append(dom) + if rule.groups & user.groups_id: + group_domains.setdefault(rule.groups[0], []).append(dom) if not rule.groups: global_domains.append(dom) # combine global domains and group domains