[FIX] web: fix duplicate changes in form view

Before this commit, in some cases, clicking on 'save' button, then on
other buttons (like 'validate' in invoices) had the unfortunate effect
of applying twice the changes in some cases.

More specifically the problem appears when:
1. an onchange is triggered (for example, taxes in invoices)
2. the user clicks on 'save', buttons are disabled
3. the 'save' actions is completed, the buttons are enabled, but
   the on_button_save still does some work: triggering event, and
   reloading the view
4. the user clicks on 'validate'
5. the onchange completes, this triggers some more work

Our only protection against such interactions is right now the fact that
buttons are disabled/enabled.  In my opinion, there should be a way
to guarantee that actions are properly serialized (that is actually what
a mutex is for... just saying). But the code of the form view/list view is
too coupled, and such changes are quite dangerous.  A real refactoring
of those is needed at some point in the future.
This commit is contained in:
Géry Debongnie
2016-05-17 10:24:47 +02:00
parent a5277bc106
commit 95cbee6243
+3 -2
View File
@@ -740,12 +740,13 @@ var FormView = View.extend(common.FieldManagerMixin, {
return;
}
this.disable_button();
return this.save().done(function(result) {
return this.save().then(function(result) {
self.trigger("save", result);
self.reload().then(function() {
return self.reload().then(function() {
self.to_view_mode();
core.bus.trigger('do_reload_needaction');
core.bus.trigger('form_view_saved', self);
self.enable_button();
});
}).always(function(){
self.enable_button();