diff options
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_controller.js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_controller.js | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_controller.js b/addons/web/static/src/js/views/basic/basic_controller.js index b7cd40d9e7c..f1e71bcfd5a 100644 --- a/addons/web/static/src/js/views/basic/basic_controller.js +++ b/addons/web/static/src/js/views/basic/basic_controller.js @@ -118,13 +118,18 @@ var BasicController = AbstractController.extend(FieldManagerMixin, { var self = this; recordID = recordID || this.handle; return this.canBeDiscarded(recordID).then(function (needDiscard) { + if (options && options.readonlyIfRealDiscard && !needDiscard) { + return; + } + if (needDiscard) { // Just some optimization self.model.discardChanges(recordID); } - if (options && options.readonlyIfRealDiscard && !needDiscard) { + if (self.model.isNew(recordID)) { + self._abandonRecord(recordID); return; } - self._setMode('readonly', recordID); + return self._confirmSave(recordID); }); }, /** @@ -386,7 +391,7 @@ var BasicController = AbstractController.extend(FieldManagerMixin, { if (options.stayInEdit) { return def; } else { - return def.then(this._setMode.bind(this, 'readonly', recordID)); + return def.then(this._confirmSave.bind(this, recordID)); } }, /** @@ -397,17 +402,13 @@ var BasicController = AbstractController.extend(FieldManagerMixin, { * @private * @param {string} mode - 'readonly' or 'edit' * @param {string} [recordID] + * @returns {Deferred} */ _setMode: function (mode, recordID) { - recordID = recordID || this.handle; - // If trying to make a temporary record readonly, discard the record - if (mode === 'readonly' && this.model.isNew(recordID)) { - this._abandonRecord(recordID); - return; - } - if (recordID === this.handle) { - this.update({mode: mode}, {reload: false}); + if ((recordID || this.handle) === this.handle) { + return this.update({mode: mode}, {reload: false}); } + return $.when(); }, /** * Helper method, to get the current environment variables from the model |
