[FIX] openerp: Field One2many child propagation on NewId dict

If exist an one2many field as child of another field, this one2many get only
empty lines and Javascript dataset set wrong referid, causing a bad query with
False values and 'one2many_v_id'$ as inverse_id.

This PR adetect on convert_to_change if field is one2many and fnames = None,
in case True, set fnames with one2many model's fields

This commit closes #12249, closes #11236

Courtsey of @rco-odoo for review
This commit is contained in:
dansanti
2017-01-18 15:27:20 +01:00
committed by Jeremy Kersten
parent 16349661e3
commit bbdf9605e4
2 changed files with 8 additions and 4 deletions
@@ -307,7 +307,12 @@ class TestOnChange(common.TransactionCase):
# When one2many domain contains non-computed field, things are ok
self.assertEqual(result['value']['important_messages'],
[(5,)] + [(4, msg.id) for msg in discussion.important_messages])
[(5,)] + [(1, msg.id, {
'name': msg.name,
'body': msg.body,
'author': (msg.author.id, msg.author.display_name),
'size': msg.size
}) for msg in discussion.important_messages])
# But here with commit 5676d81, we get value of: [(2, email.id)]
self.assertEqual(
+2 -3
View File
@@ -1915,9 +1915,8 @@ class One2many(_RelationalMulti):
_column_limit = property(attrgetter('limit'))
def convert_to_onchange(self, value, fnames=None):
if fnames:
# do not serialize self's inverse field
fnames = [name for name in fnames if name != self.inverse_name]
fnames = set(fnames or value.fields_view_get()['fields'])
fnames.discard(self.inverse_name)
return super(One2many, self).convert_to_onchange(value, fnames)