summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2016-02-22 16:32:41 +0100
committerGéry Debongnie <ged@odoo.com>2016-03-14 10:14:16 +0100
commitbbbf3db581b5cf883e10fa9cf9e2b1727f725669 (patch)
tree4c4ee7d83dd9aedeb5b6a26113134834132e130e /addons/web/static/src
parent41c94f6c77f7514a9c543dbfac008944edbd320b (diff)
[FIX] web: avoid double write in the form view
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/form_view.js15
-rw-r--r--addons/web/static/src/js/views/form_widgets.js8
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);