summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2013-07-03 14:01:14 +0200
committerFabien Meghazi <fme@openerp.com>2013-07-03 14:01:14 +0200
commit17536f7a1576a15628a4bc378f96fd81877a89d3 (patch)
tree6be5b59192f3629002f1a1cdbe804969d89892bb /addons/website/static/src/js
parentd7a782a8842398403a987e43c6513083673ca451 (diff)
[FIX] concurrency save
bzr revid: fme@openerp.com-20130703120114-js4vbbtwgettn9th
Diffstat (limited to 'addons/website/static/src/js')
-rw-r--r--addons/website/static/src/js/website.js11
1 files changed, 4 insertions, 7 deletions
diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js
index 3e7ad76bd8a..2362be58285 100644
--- a/addons/website/static/src/js/website.js
+++ b/addons/website/static/src/js/website.js
@@ -11,6 +11,7 @@ instance.website.EditorBar = instance.web.Widget.extend({
container: 'body',
start: function() {
var self = this;
+ this.saving_mutex = new $.Mutex();
self.$('button[data-action]').prop('disabled', true);
self.$('button[data-action=edit],button[data-action=snippet]').prop('disabled', false);
self.snippet_start();
@@ -33,16 +34,13 @@ instance.website.EditorBar = instance.web.Widget.extend({
});
},
save: function () {
- var sleep = function (timeout) {
- deferred = new $.Deferred();
- setTimeout(deferred.resolve, timeout);
- return deferred.promise();
- }
var self = this;
var defs = [];
$('.oe_dirty').each(function (i, v) {
var $el = $(this);
- var def = sleep(i*100).then(function () {
+ // TODO: Add a queue with concurrency limit in webclient
+ // https://github.com/medikoo/deferred/blob/master/lib/ext/function/gate.js
+ var def = self.saving_mutex.exec(function () {
return self.saveElement($el).then(function () {
$el.removeClass('oe_dirty');
}).fail(function () {
@@ -50,7 +48,6 @@ instance.website.EditorBar = instance.web.Widget.extend({
console.error(_.str.sprintf('Could not save %s#%d#%s', data.oeModel, data.oeId, data.oeField));
});
});
-
defs.push(def);
});
return $.when.apply(null, defs).then(function () {