← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 766982] Re: If you associate 2 or more groups to an ir.rule, rules are not correctly applied

 

Hello Lorenzo,

I have checked your issue and I have totally agree with Stefan 's
comment #1.

The operator working on record rule like this.

1) If the rule is global means there is no group added in ir.rules then
rules will be combined with AND operator So the domain working with
"AND" operator.

2) If the rule is not global means there is added group in ir.rules then
rules will be combined with OR operator So the domain working with "OR"
operator.

Please see the line number 129-134 on
http://bazaar.launchpad.net/~openerp/openobject-
server/6.0/view/3404/bin/addons/base/ir/ir_rule.py.

>From your scenario you have added a groups in your rules So the rules
are combined with the "OR" operator not with the "AND" operator.

So now all are working expected and this is not a bug.

That's why I am closing this bug.

Hope this will help for you.

Thanks for the understanding!

** Changed in: openobject-server
       Status: New => Invalid

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/766982

Title:
  If you associate 2 or more groups to an ir.rule, rules are not
  correctly applied

Status in OpenERP Server:
  Invalid

Bug description:
  Steps:
  1- create new db with only 'base' module
  2- create 2 groups: 'group1' and 'group2'
  3- create 2 rules on res.partner:
      - 'rule1' with domain: [('name','=','rule1')] and groups: 'group1'
      - 'rule2' with domain: [('ref','=','rule2')] and groups: 'group1' and 'group2'
  4- create user 'test' and associate to 'group1'
  5- create 2 partners:
      - with name: 'rule1' and ref: 'rule2'
      - with name: 'test' and ref: 'rule2'
  6- login with user 'test'
  7- you'll see both of partners

  This is wrong because since the user 'test' belongs to 'group1' and this group contains 2 rules, these rules must be combined with AND operator. So, user 'test' should see first partner only.
  This happens because second rule and both 2 rules are combined with OR:
  ((rule1 AND rule2) OR rule2)
  I suppose the problem to be connected with line 117 of ir_rule.py: http://bazaar.launchpad.net/~openerp/openobject-server/6.0/view/3404/bin/addons/base/ir/ir_rule.py#L115
  Instead of adding every group of the rule, you should check whether the user belongs to the group that will be added


References