diff options
| author | Christophe Matthieu <chm@odoo.com> | 2016-02-22 16:32:41 +0100 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2016-03-14 10:14:16 +0100 |
| commit | bbbf3db581b5cf883e10fa9cf9e2b1727f725669 (patch) | |
| tree | 4c4ee7d83dd9aedeb5b6a26113134834132e130e /addons | |
| parent | 41c94f6c77f7514a9c543dbfac008944edbd320b (diff) | |
[FIX] web: avoid double write in the form view
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/web/static/src/js/views/form_view.js | 15 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form_widgets.js | 8 |
2 files changed, 21 insertions, 2 deletions
diff --git a/addons/web/static/src/js/views/form_view.js b/addons/web/static/src/js/views/form_view.js index fa2a8ef8ab5..25d13cbe753 100644 --- a/addons/web/static/src/js/views/form_view.js +++ b/addons/web/static/src/js/views/form_view.js @@ -723,9 +723,20 @@ var FormView = View.extend(common.FieldManagerMixin, { } } }, + disable_button: function () { + this.$('.oe_form_buttons').add(this.$buttons).find('button').addClass('o_disabled').prop('disabled', true); + this.is_disabled = true; + }, + enable_button: function () { + this.$('.oe_form_buttons').add(this.$buttons).find('button.o_disabled').removeClass('o_disabled').prop('disabled', false); + this.is_disabled = false; + }, on_button_save: function(e) { var self = this; - $(e.target).attr("disabled", true); + if (this.is_disabled) { + return; + } + this.disable_button(); return this.save().done(function(result) { self.trigger("save", result); self.reload().then(function() { @@ -734,7 +745,7 @@ var FormView = View.extend(common.FieldManagerMixin, { core.bus.trigger('form_view_saved', self); }); }).always(function(){ - $(e.target).attr("disabled", false); + self.enable_button(); }); }, on_button_cancel: function(event) { diff --git a/addons/web/static/src/js/views/form_widgets.js b/addons/web/static/src/js/views/form_widgets.js index 0f89396eed2..fbc8a28e375 100644 --- a/addons/web/static/src/js/views/form_widgets.js +++ b/addons/web/static/src/js/views/form_widgets.js @@ -51,9 +51,14 @@ var WidgetButton = common.FormWidget.extend({ }, on_click: function() { var self = this; + if (this.view.is_disabled) { + return; + } this.force_disabled = true; this.check_disable(); + this.view.disable_button(); this.execute_action().always(function() { + self.view.enable_button(); self.force_disabled = false; self.check_disable(); if (self.$el.hasClass('o_wow')) { @@ -1499,6 +1504,9 @@ var FieldStatus = common.AbstractField.extend({ on_click_stage: function (ev) { var self = this; var $li = $(ev.currentTarget); + if (this.view.is_disabled) { + return; + } var val; if (this.field.type == "many2one") { val = parseInt($li.data("id"), 10); |
