summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2017-02-22 16:48:20 +0100
committerAaron Bohy <aab@odoo.com>2017-04-11 19:44:38 +0200
commit044e7bb59989500bdbdc8ace0402c314534a9975 (patch)
tree6d0a036262fc6eb08f3ddb66db2ab4596625e9af /addons/web/static/src
parent05ec284e9c458059260645f0eaa5b82b81a12cf0 (diff)
[FIX] web: display error dialog when onchanges fails
When the onchange returns a dictionary with a 'warning' key, it is supposed to fail and display a dialog with the content of the warning.
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js6
-rw-r--r--addons/web/static/src/js/views/field_manager_mixin.js10
2 files changed, 15 insertions, 1 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 ac82b5bf2e8..c2855c8aaa4 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -951,7 +951,8 @@ var Model = AbstractModel.extend({
*
* @param {Object} record
* @param {string[]} fields changed fields
- * @returns
+ * @returns {Deferred} The returned deferred can fail, in which case the
+ * fail value will be the warning message received from the server
*/
_applyOnChange: function (record, fields) {
var self = this;
@@ -980,6 +981,9 @@ var Model = AbstractModel.extend({
return this.mutex.exec(function () {
var args = [idList, currentData, fields, onchange_spec, context];
return self.performModelRPC(record.model, 'onchange', args, {}).then(function (result) {
+ if (result.warning) {
+ return $.Deferred().reject(result.warning);
+ }
var defs = [];
_.each(result.value, function (val, name) {
var field = record.fields[name];
diff --git a/addons/web/static/src/js/views/field_manager_mixin.js b/addons/web/static/src/js/views/field_manager_mixin.js
index f1a238e7316..92c3da6a1fc 100644
--- a/addons/web/static/src/js/views/field_manager_mixin.js
+++ b/addons/web/static/src/js/views/field_manager_mixin.js
@@ -9,6 +9,10 @@ odoo.define('web.FieldManagerMixin', function (require) {
*/
var BasicModel = require('web.BasicModel');
+var Dialog = require('web.Dialog');
+var core = require('web.core');
+
+var qweb = core.qweb;
return {
custom_events: {
@@ -84,6 +88,12 @@ return {
} else {
self._confirmChange(dataPointID, result, event);
}
+ }).fail(function (warning) {
+ new Dialog(self, {
+ size: 'medium',
+ title: warning.title,
+ $content: qweb.render("CrashManager.warning", warning)
+ }).open();
});
},
/**