summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/basic
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src/js/views/basic')
-rw-r--r--addons/web/static/src/js/views/basic/basic_controller.js4
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js18
2 files changed, 13 insertions, 9 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 af4ca7d7a08..67a4fa504d8 100644
--- a/addons/web/static/src/js/views/basic/basic_controller.js
+++ b/addons/web/static/src/js/views/basic/basic_controller.js
@@ -423,7 +423,7 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
});
if (!options.stayInEdit) {
saveDef = saveDef.then(function (fieldNames) {
- var def = fieldNames.length ? self._confirmSave(recordID) : self._setMode('readonly');
+ var def = fieldNames.length ? self._confirmSave(recordID) : self._setMode('readonly', recordID);
return def.then(function () {
return fieldNames;
});
@@ -534,6 +534,7 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
* @param {function} ev.data.action the function to execute in the mutex
*/
_onMutexify: function (ev) {
+ ev.stopPropagation(); // prevent other controllers from handling this request
this.mutex.exec(ev.data.action);
},
/**
@@ -578,6 +579,7 @@ var BasicController = AbstractController.extend(FieldManagerMixin, {
* @param {OdooEvent} event
*/
_onTranslate: function (event) {
+ event.stopPropagation();
var record = this.model.get(event.data.id, {raw: true});
this._rpc({
route: '/web/dataset/call_button',
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 d897a74c696..716624f368b 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -1399,7 +1399,8 @@ var BasicModel = AbstractModel.extend({
* @param {string} [optinos.viewType] the type of view for which the record
* is fetched (usefull to load the adequate fields), by defaults, uses
* record.viewType
- * @returns {Deferred -> Object} resolves to the record
+ * @returns {Deferred -> Object} resolves to the record or is rejected in
+ * case no id given were valid ids
*/
_fetchRecord: function (record, options) {
var self = this;
@@ -1412,6 +1413,9 @@ var BasicModel = AbstractModel.extend({
context: _.extend({}, record.context, {bin_size: true}),
})
.then(function (result) {
+ if (result.length === 0) {
+ return $.Deferred().reject();
+ }
result = result[0];
record.data = _.extend({}, record.data, result);
})
@@ -2194,12 +2198,6 @@ var BasicModel = AbstractModel.extend({
if (!field || field.name === 'id') {
continue;
}
- if (field.type === 'float' ||
- field.type === 'integer' ||
- field.type === 'monetary') {
- context[fieldName] = context[fieldName] || 0;
- continue;
- }
if (field.type === 'date' || field.type === 'datetime') {
if (context[fieldName]) {
context[fieldName] = JSON.parse(JSON.stringify(context[fieldName]));
@@ -2445,7 +2443,11 @@ var BasicModel = AbstractModel.extend({
var fieldName = fieldNames[i];
if (!(fieldName in result)) {
var field = params.fields[fieldName];
- if (field.type === 'one2many' || field.type === 'many2many') {
+ if (field.type === 'float' ||
+ field.type === 'integer' ||
+ field.type === 'monetary') {
+ result[fieldName] = 0;
+ } else if (field.type === 'one2many' || field.type === 'many2many') {
result[fieldName] = [];
} else {
result[fieldName] = null;