diff options
| author | Géry Debongnie <ged@odoo.com> | 2017-02-22 16:48:20 +0100 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-04-11 19:44:38 +0200 |
| commit | 044e7bb59989500bdbdc8ace0402c314534a9975 (patch) | |
| tree | 6d0a036262fc6eb08f3ddb66db2ab4596625e9af /addons/web/static/src | |
| parent | 05ec284e9c458059260645f0eaa5b82b81a12cf0 (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.js | 6 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/field_manager_mixin.js | 10 |
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(); }); }, /** |
