summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorOlivier Dony <odo@openerp.com>2014-06-11 11:41:48 +0200
committerOlivier Dony <odo@openerp.com>2014-06-11 18:42:18 +0200
commitff8b843b18e02cd9889eb08528f4e01e6a8b0820 (patch)
treedb64b893406beb978bda6878a092db2661179ee1 /addons
parent5d77de54e5c1b7465d133e508f8986b8249e0368 (diff)
[FIX] base_action_rule: do not force registry reload when writing on a rule unless really needed
Executing a rule always updates the `last_run` value, which would always force a useless registry reload to occur. Only signal the change if the rule applies to a model that was not previoulsy monitored for base action rules.
Diffstat (limited to 'addons')
-rw-r--r--addons/base_action_rule/base_action_rule.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py
index 37c4980528e..988cff1b972 100644
--- a/addons/base_action_rule/base_action_rule.py
+++ b/addons/base_action_rule/base_action_rule.py
@@ -193,6 +193,7 @@ class base_action_rule(osv.osv):
""" Wrap the methods `create` and `write` of the models specified by
the rules given by `ids` (or all existing rules if `ids` is `None`.)
"""
+ updated = False
if ids is None:
ids = self.search(cr, SUPERUSER_ID, [])
for action_rule in self.browse(cr, SUPERUSER_ID, ids):
@@ -202,20 +203,21 @@ class base_action_rule(osv.osv):
model_obj.create = self._wrap_create(model_obj.create, model)
model_obj.write = self._wrap_write(model_obj.write, model)
model_obj.base_action_ruled = True
- return True
+ updated = True
+ return updated
def create(self, cr, uid, vals, context=None):
res_id = super(base_action_rule, self).create(cr, uid, vals, context=context)
- self._register_hook(cr, [res_id])
- openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
+ if self._register_hook(cr, [res_id]):
+ openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return res_id
def write(self, cr, uid, ids, vals, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
super(base_action_rule, self).write(cr, uid, ids, vals, context=context)
- self._register_hook(cr, ids)
- openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
+ if self._register_hook(cr, ids):
+ openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return True
def onchange_model_id(self, cr, uid, ids, model_id, context=None):