← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~openerp-dev/openobject-server/6.0-bug-719406-jvo into lp:openobject-server/6.0

 

Jay Vora (OpenERP) has proposed merging lp:~openerp-dev/openobject-server/6.0-bug-719406-jvo into lp:openobject-server/6.0.

Requested reviews:
  Stephane Wirtel (OpenERP) (stephane-openerp)
  Olivier Dony (OpenERP) (odo)
  OpenERP Core Team (openerp)
Related bugs:
  #719406 Record rules with domain blank or [] result in application error
  https://bugs.launchpad.net/bugs/719406

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/6.0-bug-719406-jvo/+merge/51367
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/6.0-bug-719406-jvo/+merge/51367
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/6.0-bug-719406-jvo.
=== modified file 'bin/addons/base/ir/ir_rule.py'
--- bin/addons/base/ir/ir_rule.py	2010-12-10 22:42:58 +0000
+++ bin/addons/base/ir/ir_rule.py	2011-02-25 20:43:06 +0000
@@ -34,9 +34,11 @@
     def _domain_force_get(self, cr, uid, ids, field_name, arg, context={}):
         res = {}
         for rule in self.browse(cr, uid, ids, context):
-            eval_user_data = {'user': self.pool.get('res.users').browse(cr, 1, uid),
-                              'time':time}
-            res[rule.id] = eval(rule.domain_force, eval_user_data)
+            res.setdefault(rule.id,[])
+            if rule.domain_force:
+                eval_user_data = {'user': self.pool.get('res.users').browse(cr, 1, uid),
+                                  'time':time}
+                res[rule.id] = eval(rule.domain_force, eval_user_data)
         return res
 
     def _get_value(self, cr, uid, ids, field_name, arg, context={}):
@@ -111,9 +113,14 @@
                 if not rule.groups:
                   global_rules.append(rule.id)
             dom = self.domain_create(cr, uid, global_rules)
-            dom += ['|'] * (len(group_rule)-1)
+            #When the rule has groups associated,prepend '|'(s) to the relevant domains
+            dom_ORing = ['|'] * (len(group_rule)-1)
+            dom_group = []
             for value in group_rule.values():
-                dom += self.domain_create(cr, uid, value)
+                dom_group += self.domain_create(cr, uid, value)
+            #If the rule has groups associated and rule has a valid domain,append the new domain 
+            if dom_ORing and dom_group:
+                dom += dom_ORing + dom_group
             return dom
         return []
 


Follow ups