openerp-dev-web team mailing list archive
-
openerp-dev-web team
-
Mailing list archive
-
Message #03519
lp:~openerp-dev/openobject-server/6.0-bug-719406-empty-record-rules-vmt into lp:openobject-server/6.0
Vo Minh Thu (OpenERP) has proposed merging lp:~openerp-dev/openobject-server/6.0-bug-719406-empty-record-rules-vmt into lp:openobject-server/6.0.
Requested reviews:
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-empty-record-rules-vmt/+merge/51522
--
https://code.launchpad.net/~openerp-dev/openobject-server/6.0-bug-719406-empty-record-rules-vmt/+merge/51522
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-server/6.0-bug-719406-empty-record-rules-vmt.
=== 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-28 12:06:47 +0000
@@ -34,9 +34,12 @@
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)
+ 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)
+ else:
+ res[rule.id] = []
return res
def _get_value(self, cr, uid, ids, field_name, arg, context={}):
@@ -81,10 +84,15 @@
]
def domain_create(self, cr, uid, rule_ids):
- dom = ['&'] * (len(rule_ids)-1)
+ count = 0
+ dom = []
for rule in self.browse(cr, uid, rule_ids):
- dom += rule.domain
- return dom
+ if rule.domain:
+ dom += rule.domain
+ count += 1
+ if count:
+ return ['&'] * (count-1) + dom
+ return []
@tools.cache()
def _compute_domain(self, cr, uid, model_name, mode="read"):
@@ -110,11 +118,18 @@
group_rule.setdefault(group.id, []).append(rule.id)
if not rule.groups:
global_rules.append(rule.id)
- dom = self.domain_create(cr, uid, global_rules)
- dom += ['|'] * (len(group_rule)-1)
+ global_domain = self.domain_create(cr, uid, global_rules)
+ count = 0
+ group_domains = []
for value in group_rule.values():
- dom += self.domain_create(cr, uid, value)
- return dom
+ group_domain = self.domain_create(cr, uid, value)
+ if group_domain:
+ group_domains += group_domain
+ count += 1
+ if count and global_domain:
+ return ['&'] + global_domain + ['|'] * (count-1) + group_domains
+ if count:
+ return ['|'] * (count-1) + group_domains
return []
def clear_cache(self, cr, uid):
Follow ups