diff options
| author | dansanti <dansanti@gmail.com> | 2016-05-31 14:04:54 -0400 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2017-01-18 15:27:20 +0100 |
| commit | bbdf9605e4c480e1fc19b1faac9cfc4321bcaea2 (patch) | |
| tree | f73a88f50c6541f2599e9efd0d8f1b095b8dff46 | |
| parent | 16349661e3f2466c9f3e37496478de4605d3be10 (diff) | |
[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
| -rw-r--r-- | openerp/addons/test_new_api/tests/test_onchange.py | 7 | ||||
| -rw-r--r-- | openerp/fields.py | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/openerp/addons/test_new_api/tests/test_onchange.py b/openerp/addons/test_new_api/tests/test_onchange.py index 88e481c3052..9876d631044 100644 --- a/openerp/addons/test_new_api/tests/test_onchange.py +++ b/openerp/addons/test_new_api/tests/test_onchange.py @@ -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( diff --git a/openerp/fields.py b/openerp/fields.py index 6ccc6325f83..635d5db10ad 100644 --- a/openerp/fields.py +++ b/openerp/fields.py @@ -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) |
