summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js/common/ace.js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-02-04 13:27:22 +0100
committerChristophe Simonis <chs@odoo.com>2019-02-04 13:27:22 +0100
commit4400cce8201579fc9769b5e2d33829b43bce82d9 (patch)
treec507c7dca21bfb0c3bdca8ba57e63a6ab16f230c /addons/web_editor/static/src/js/common/ace.js
parentceb05489303dee728c3960a87bf23795efc374c4 (diff)
parent4524ad06a8af82ab337fc5aa1d5aa8d8d3024923 (diff)
[MERGE] forward port branch saas-12.1 up to 4524ad06a8a
Diffstat (limited to 'addons/web_editor/static/src/js/common/ace.js')
-rw-r--r--addons/web_editor/static/src/js/common/ace.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/addons/web_editor/static/src/js/common/ace.js b/addons/web_editor/static/src/js/common/ace.js
index 2379a938d1f..6216633e424 100644
--- a/addons/web_editor/static/src/js/common/ace.js
+++ b/addons/web_editor/static/src/js/common/ace.js
@@ -2,6 +2,7 @@ odoo.define('web_editor.ace', function (require) {
'use strict';
var ajax = require('web.ajax');
+var concurrency = require('web.concurrency');
var core = require('web.core');
var Dialog = require('web.Dialog');
var Widget = require('web.Widget');
@@ -360,7 +361,7 @@ var ViewEditor = Widget.extend({
this.aceEditor.setSession(editingSession);
if (this.currentType === 'xml') {
- this.$viewID.text(_.str.sprintf(_t("Template ID: %s"), this.views[resID].xml_id));
+ this.$viewID.text(_.str.sprintf(_t("Template ID: %s"), this.views[resID].key));
} else {
this.$viewID.text(_.str.sprintf(_t("SCSS file: %s"), resID));
}
@@ -537,6 +538,7 @@ var ViewEditor = Widget.extend({
* error occured.
*/
_saveResources: function () {
+ var self = this;
var toSave = {};
var errorFound = false;
_.each(this.editingSessions, (function (editingSessions, type) {
@@ -564,8 +566,15 @@ var ViewEditor = Widget.extend({
if (errorFound) return $.Deferred().reject(errorFound);
var defs = [];
+ var mutex = new concurrency.Mutex();
_.each(toSave, (function (_toSave, type) {
- defs = defs.concat(_.map(_toSave, (type === 'xml' ? this._saveView : this._saveSCSS).bind(this)));
+ // Child views first as COW on a parent would delete them
+ _toSave = _.sortBy(_toSave, 'id').reverse();
+ _.each(_toSave, function (session) {
+ defs.push(mutex.exec(function () {
+ return (type === 'xml' ? self._saveView(session) : self._saveSCSS(session));
+ }));
+ });
}).bind(this));
return $.when.apply($, defs).fail((function (session, error) {