diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py index 16144c266fc..fc72c500e50 100644 --- a/odoo/addons/test_new_api/tests/test_onchange.py +++ b/odoo/addons/test_new_api/tests/test_onchange.py @@ -149,10 +149,17 @@ class TestOnChange(common.TransactionCase): (5,), (1, message1.id, { 'name': "[%s] %s" % ("Foo", USER.name), + 'body': "ABC", + 'author': USER.name_get()[0], + 'size': 3, + 'important': False, }), (1, message2.id, { 'name': "[%s] %s" % ("Foo", USER.name), 'body': "XYZ", # this must be sent back + 'author': USER.name_get()[0], + 'size': 3, + 'important': False, }), (0, 0, { 'name': "[%s] %s" % ("Foo", USER.name), @@ -262,11 +269,16 @@ class TestOnChange(common.TransactionCase): 'name': partner2.name, 'lines': [ (5,), - (1, line1.id, {'name': partner2.name, - 'partner': (partner2.id, partner2.name)}), - (0, 0, {'name': partner2.name, - 'partner': (partner2.id, partner2.name), - 'tags': [(5,)]}), + (1, line1.id, { + 'name': partner2.name, + 'partner': (partner2.id, partner2.name), + 'tags': [(5,)], + }), + (0, 0, { + 'name': partner2.name, + 'partner': (partner2.id, partner2.name), + 'tags': [(5,)], + }), ], }) @@ -286,11 +298,16 @@ class TestOnChange(common.TransactionCase): 'name': partner2.name, 'lines': [ (5,), - (1, line1.id, {'name': partner2.name, - 'partner': (partner2.id, partner2.name)}), - (0, 0, {'name': partner2.name, - 'partner': (partner2.id, partner2.name), - 'tags': [(5,), (0, 0, {'name': 'Tag'})]}), + (1, line1.id, { + 'name': partner2.name, + 'partner': (partner2.id, partner2.name), + 'tags': [(5,)], + }), + (0, 0, { + 'name': partner2.name, + 'partner': (partner2.id, partner2.name), + 'tags': [(5,), (0, 0, {'name': 'Tag'})], + }), ], } self.assertEqual(result['value'], expected_value) @@ -439,7 +456,14 @@ class TestOnChange(common.TransactionCase): self.assertEqual( result['value']['important_emails'], - [(5,), (1, email.id, {'name': u'[Foo Bar] %s' % USER.name})], + [(5,), (1, email.id, { + 'name': u'[Foo Bar] %s' % USER.name, + 'body': BODY, + 'author': USER.name_get()[0], + 'size': len(BODY), + 'important': True, + 'email_to': demo.email, + })], ) def test_onchange_related(self): diff --git a/odoo/models.py b/odoo/models.py index dc1a4b4f427..3266a763977 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -5100,10 +5100,13 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): line_diff = line_snapshot.diff({}) commands.append((0, line.id.ref or 0, line_diff)) else: - # existing line: send diff from database + # existing line: check diff from database # (requires a clean record cache!) line_diff = line_snapshot.diff(Snapshot(line, subnames)) if line_diff: + # send all fields because the web client + # might need them to evaluate modifiers + line_diff = line_snapshot.diff({}) commands.append((1, line.id, line_diff)) else: commands.append((4, line.id))