summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-11-12 13:06:48 +0100
committerChristophe Simonis <chs@odoo.com>2018-11-12 13:06:48 +0100
commit99d0e1b80e5b2d5eb59b96c6ce1bf246f8df2326 (patch)
tree6c53282f8a22e9b59d83762ebe057173172c5f63 /addons/web/static/src/js/views
parent4d53266e236d1816e45b13aa50bcafb1bab2bc8c (diff)
parenta403155dec769418ede3c9128a887847f97a956f (diff)
[MERGE] forward port branch 12.0 up to a403155dec7
Diffstat (limited to 'addons/web/static/src/js/views')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js41
1 files changed, 17 insertions, 24 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 0701c1d1046..d0f15aeb369 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -3733,27 +3733,21 @@ var BasicModel = AbstractModel.extend({
_makeDefaultRecord: function (modelName, params) {
var self = this;
- var determineExtraFields = function () {
- // Fields that are present in the originating view, that need to be initialized
- // Hence preventing their value to crash when getting back to the originating view
- var parentRecord = self.localData[params.parentID];
-
- var originView = parentRecord && parentRecord.fieldsInfo;
- if (!originView || !originView[parentRecord.viewType])
- return [];
-
- var fieldsFromOrigin = _.filter(Object.keys(originView[parentRecord.viewType]),
- function (fieldname) {
- return params.fields[fieldname] !== undefined;
- });
-
- return fieldsFromOrigin;
- };
-
- var fieldNames = Object.keys(params.fieldsInfo[params.viewType]);
+ var targetView = params.viewType;
+ var fields = params.fields;
+ var fieldsInfo = params.fieldsInfo;
+ var fieldNames = Object.keys(fieldsInfo[targetView]);
var fields_key = _.without(fieldNames, '__last_update');
- var extraFields = determineExtraFields();
+ // Fields that are present in the originating view, that need to be initialized
+ // Hence preventing their value to crash when getting back to the originating view
+ var parentRecord = self.localData[params.parentID];
+ if (parentRecord) {
+ var originView = parentRecord.viewType;
+ fieldNames = _.union(fieldNames, Object.keys(parentRecord.fieldsInfo[originView]));
+ fieldsInfo[targetView] = _.defaults({}, fieldsInfo[targetView], parentRecord.fieldsInfo[originView]);
+ fields = _.defaults({}, fields, parentRecord.fields);
+ }
return this._rpc({
model: modelName,
@@ -3762,15 +3756,14 @@ var BasicModel = AbstractModel.extend({
context: params.context,
})
.then(function (result) {
-
var record = self._makeDataPoint({
modelName: modelName,
- fields: params.fields,
- fieldsInfo: params.fieldsInfo,
+ fields: fields,
+ fieldsInfo: fieldsInfo,
context: params.context,
parentID: params.parentID,
res_ids: params.res_ids,
- viewType: params.viewType,
+ viewType: targetView,
});
// We want to overwrite the default value of the handle field (if any),
@@ -3787,7 +3780,7 @@ var BasicModel = AbstractModel.extend({
result[overrideDefaultFields.field] = overrideDefaultFields.value;
}
- return self.applyDefaultValues(record.id, result, {fieldNames: _.union(fieldNames, extraFields)})
+ return self.applyDefaultValues(record.id, result, {fieldNames: fieldNames})
.then(function () {
var def = $.Deferred();
self._performOnChange(record, fields_key).always(function () {