diff options
| author | qsm-odoo <qsm@odoo.com> | 2017-03-10 12:27:57 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-04-11 19:44:38 +0200 |
| commit | ba1a2d7145606e22ae316a636a1852a7ae80a3df (patch) | |
| tree | 2308993cb39916c4e54cf1a707faa07f2d5d85d6 /addons/web/static/src/js/views/basic/basic_model.js | |
| parent | a52690c26cafea207c33fa7c5378cda1c45523f2 (diff) | |
[FIX] web: DataModel _postprocess was called at a wrong time
The _postprocess method should always be called after _parseServerData,
otherwise the localData between each call is inconsistent for the
relational fields (Array or key pointing to another localData).
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_model.js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 9f2242751e6..f6c2021f2e8 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1320,13 +1320,14 @@ var BasicModel = AbstractModel.extend({ .then(function (result) { result = result[0]; record.data = _.extend({}, record.data, result); - }).then(function () { + }) + .then(function () { + self._parseServerData(fieldNames, record.fields, record.data); + }) + .then(function () { return self._fetchX2Manys(record, oldData, fieldNames).then(function () { return self._postprocess(record); }); - }).then(function (record) { - self._parseServerData(fieldNames, record.fields, record.data); - return record; }); }, /** @@ -1836,7 +1837,8 @@ var BasicModel = AbstractModel.extend({ var field_values = _.mapObject(record.data, function (val, key) { var fieldType = record.fields[key].type; if (fieldType === 'many2one') { - return val instanceof Array && val[0]; + var element = self.localData[val]; + return element && element.data.id || false; } return val; }); @@ -1864,13 +1866,14 @@ var BasicModel = AbstractModel.extend({ defs.push(fetch_status_information); } if (options.always_reload) { - if (record.data[name] instanceof Array) { + if (record.fields[name].type === 'many2one' && record.data[name]) { + var element = self.localData[record.data[name]]; defs.push(self._rpc(field.relation, 'name_get') - .args([record.data[name][0]]) + .args([element.data.id]) .withContext(self._getContext(record, {fieldName: name})) .exec() .then(function (result) { - record.data[name] = result[0]; + element.data.display_name = result[0][1]; })); } } |
