diff --git a/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js b/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js index 25e8dfa2835..b55d8aed6e0 100644 --- a/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js +++ b/addons/web_editor/static/src/js/wysiwyg/widgets/color_palette.js @@ -11,6 +11,8 @@ const weUtils = require('web_editor.utils'); const qweb = core.qweb; +let colorpickerArch; + const ColorPaletteWidget = Widget.extend({ // ! for xmlDependencies, see loadDependencies function template: 'web_editor.snippet.option.colorpicker', @@ -67,9 +69,7 @@ const ColorPaletteWidget = Widget.extend({ const res = this._super.apply(this, arguments); const $colorSection = this.$('.o_colorpicker_sections[data-color-tab="theme-colors"]'); - const $clpicker = qweb.has_template('web_editor.colorpicker') - ? $(qweb.render('web_editor.colorpicker')) - : $(`
`); + const $clpicker = $(colorpickerArch || `
`); $clpicker.find('button').addClass('o_we_color_btn'); $clpicker.appendTo($colorSection); @@ -371,14 +371,12 @@ ColorPaletteWidget.loadDependencies = async function (rpcCapableObj) { // the default summernote ones. if (!session.is_website_user) { // We can call the colorPalette multiple times but only need 1 rpc - if (!colorpickerTemplateProm && !qweb.has_template('web_editor.colorpicker')) { + if (!colorpickerTemplateProm && !colorpickerArch) { colorpickerTemplateProm = rpcCapableObj._rpc({ model: 'ir.ui.view', - method: 'read_template', - args: ['web_editor.colorpicker'], - }).then(template => { - return qweb.add_template('' + template + ''); - }); + method: 'render_public_asset', + args: ['web_editor.colorpicker', {}], + }).then(arch => colorpickerArch = arch); } proms.push(colorpickerTemplateProm); } diff --git a/addons/web_editor/static/tests/test_utils.js b/addons/web_editor/static/tests/test_utils.js index 1aa4a79c573..cf2157495a8 100644 --- a/addons/web_editor/static/tests/test_utils.js +++ b/addons/web_editor/static/tests/test_utils.js @@ -9,27 +9,26 @@ var Wysiwyg = require('web_editor.wysiwyg'); var options = require('web_editor.snippets.options'); const COLOR_PICKER_TEMPLATE = ` - - -
-
-
-
-
- - `; + +
+
+
+
+
+ +`; const SNIPPETS_TEMPLATE = `

Add blocks

@@ -92,11 +91,11 @@ MockServer.include({ * @returns {Promise} */ async _performRpc(route, args) { - if (args.model === "ir.ui.view") { - if (args.method === 'read_template' && args.args[0] === "web_editor.colorpicker") { + if (args.model === "ir.ui.view" && args.method === 'render_public_asset') { + if (args.args[0] === "web_editor.colorpicker") { return COLOR_PICKER_TEMPLATE; } - if (args.method === 'render_public_asset' && args.args[0] === "web_editor.snippets") { + if (args.args[0] === "web_editor.snippets") { return SNIPPETS_TEMPLATE; } } @@ -192,12 +191,10 @@ function wysiwygData(data) { }, }, records: [], - read_template(args) { + render_template(args) { if (args[0] === 'web_editor.colorpicker') { return COLOR_PICKER_TEMPLATE; } - }, - render_template(args) { if (args[0] === 'web_editor.snippets') { return SNIPPETS_TEMPLATE; } diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index e51c6eff524..7f03985b13e 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -324,13 +324,6 @@ class View(models.Model): return view.id return super(View, self.sudo()).get_view_id(xml_id) - @api.model - def read_template(self, xml_id): - view = self._view_obj(self.get_view_id(xml_id)) - if view.visibility and view._handle_visibility(do_raise=False): - self = self.sudo() - return super(View, self).read_template(xml_id) - def _get_original_view(self): """Given a view, retrieve the original view it was COW'd from. The given view might already be the original one. In that case it will diff --git a/odoo/addons/base/models/ir_ui_view.py b/odoo/addons/base/models/ir_ui_view.py index ddf8f7ae9f0..d7f2aeaf8c3 100644 --- a/odoo/addons/base/models/ir_ui_view.py +++ b/odoo/addons/base/models/ir_ui_view.py @@ -1588,15 +1588,6 @@ actual arch. arch = etree.tostring(arch_tree, encoding='unicode') return arch - @api.model - def read_template(self, xml_id): - """ Return a template content based on external id - Read access on ir.ui.view required - """ - template_id = self.get_view_id(xml_id) - self.browse(template_id)._check_view_access() - return self._read_template(template_id) - @api.model def get_view_id(self, template): """ Return the view ID corresponding to ``template``, which may be a