summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic/basic_model.js
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2017-03-10 12:27:57 +0100
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commitba1a2d7145606e22ae316a636a1852a7ae80a3df (patch)
tree2308993cb39916c4e54cf1a707faa07f2d5d85d6 /addons/web/static/src/js/views/basic/basic_model.js
parenta52690c26cafea207c33fa7c5378cda1c45523f2 (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.js19
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];
}));
}
}