diff --git a/addons/base_action_rule/base_action_rule_demo.xml b/addons/base_action_rule/base_action_rule_demo.xml
index 4c4a5e841ad..c626cd41a3a 100644
--- a/addons/base_action_rule/base_action_rule_demo.xml
+++ b/addons/base_action_rule/base_action_rule_demo.xml
@@ -43,5 +43,12 @@
[('customer', '=', True)]
+
+
+ Test rule on secondary record
+ on_create
+
+
+
diff --git a/addons/base_action_rule/security/ir.model.access.csv b/addons/base_action_rule/security/ir.model.access.csv
index b509ec62944..cec3f676e0b 100644
--- a/addons/base_action_rule/security/ir.model.access.csv
+++ b/addons/base_action_rule/security/ir.model.access.csv
@@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_base_action_rule,base.action.rule,model_base_action_rule,,1,0,0,0
access_base_action_rule_config,base.action.rule config,model_base_action_rule,base.group_system,1,1,1,1
access_base_action_rule_lead_test,access_base_action_rule_lead_test,model_base_action_rule_lead_test,base.group_system,1,1,1,1
+access_base_action_rule_line_test,access_base_action_rule_line_test,model_base_action_rule_line_test,base.group_system,1,1,1,1
diff --git a/addons/base_action_rule/test_models.py b/addons/base_action_rule/test_models.py
index 5c0ae12886e..2bfb568d762 100644
--- a/addons/base_action_rule/test_models.py
+++ b/addons/base_action_rule/test_models.py
@@ -24,6 +24,7 @@ class lead_test(osv.Model):
'active': fields.boolean('Active', required=False),
'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null'),
'date_action_last': fields.datetime('Last Action', readonly=1),
+ 'line_ids': fields.one2many('base.action.rule.line.test', 'lead_id'),
}
_defaults = {
@@ -39,3 +40,12 @@ class lead_test(osv.Model):
def message_subscribe(self, cr, uid, ids, partner_ids=None, channel_ids=None, subtype_ids=None, force=True, context=None):
pass
+
+
+class line_test(osv.Model):
+ _name = "base.action.rule.line.test"
+ _description = "Action Rule Line Test"
+
+ name = openerp.fields.Char()
+ lead_id = openerp.fields.Many2one('base.action.rule.lead.test', ondelete='cascade')
+ user_id = openerp.fields.Many2one('res.users')
diff --git a/addons/base_action_rule/tests/test_base_action_rule.py b/addons/base_action_rule/tests/test_base_action_rule.py
index ccc33404d6f..b6e7d880246 100644
--- a/addons/base_action_rule/tests/test_base_action_rule.py
+++ b/addons/base_action_rule/tests/test_base_action_rule.py
@@ -77,7 +77,7 @@ class base_action_rule_test(common.TransactionCase):
self.assertEqual(lead.state, 'done')
self.assertEqual(lead.user_id, self.user_demo)
- def test_04_recomputed_field(self):
+ def test_10_recomputed_field(self):
"""
Check that a rule is executed whenever a field is recomputed after a
change on another model.
@@ -91,3 +91,20 @@ class base_action_rule_test(common.TransactionCase):
partner.write({'customer': True})
self.assertTrue(lead.customer)
self.assertEqual(lead.user_id, self.user_demo)
+
+ def test_20_direct_line(self):
+ """
+ Check that a rule is executed after creating a line record.
+ """
+ line = self.env['base.action.rule.line.test'].create({'name': "Line"})
+ self.assertEqual(line.user_id, self.user_demo)
+
+ def test_20_indirect_line(self):
+ """
+ Check that creating a lead with a line executes rules on both records.
+ """
+ lead = self.create_lead(line_ids=[(0, 0, {'name': "Line"})])
+ self.assertEqual(lead.state, 'draft')
+ self.assertEqual(lead.user_id, self.user_demo)
+ self.assertEqual(len(lead.line_ids), 1)
+ self.assertEqual(lead.line_ids.user_id, self.user_demo)