From 6edf49e36f09c01c61a1dbdb878c5faabf0aef3f Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Fri, 22 Jun 2018 15:23:53 +0200 Subject: [PATCH] [IMP] ir_qweb: provide a clean way to ovverride the AssetsBundle to use This revision follows revisions - 9cd982bcc811cacb42f5c08db139043d2734b891 - df4072b0b493000ccfa4e453d785bcea27659e5c We noticed modules implementing multi-websites features override `_get_asset` to be able to provide their own overriden `AssetsBunble` class. Private methods are meant for internal usage of the code/module, overriding is never a good idea given the fact their signature can change. As this is the case in commit 9cd982bcc811cacb42f5c08db139043d2734b891. That said, we understand their was no other way to go. We therefore decide to provide one, by adding a method that can be overriden to pass their own AssetsBunble class instance. opw-1860136 --- odoo/addons/base/ir/ir_qweb/ir_qweb.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/odoo/addons/base/ir/ir_qweb/ir_qweb.py b/odoo/addons/base/ir/ir_qweb/ir_qweb.py index 084ed7e5ae9..105c12f7b08 100644 --- a/odoo/addons/base/ir/ir_qweb/ir_qweb.py +++ b/odoo/addons/base/ir/ir_qweb/ir_qweb.py @@ -286,6 +286,9 @@ class IrQWeb(models.AbstractModel, QWeb): # method called by computing code + def get_asset_bundle(self, xmlid, files, remains=None, env=None): + return AssetsBundle(xmlid, files, remains=remains, env=env) + # compatibility to remove after v11 - DEPRECATED @tools.conditional( 'xml' not in tools.config['dev_mode'], @@ -293,7 +296,7 @@ class IrQWeb(models.AbstractModel, QWeb): ) def _get_asset(self, xmlid, options, css=True, js=True, debug=False, async=False, values=None): files, remains = self._get_asset_content(xmlid, options) - asset = AssetsBundle(xmlid, files, remains, env=self.env) + asset = self.get_asset_bundle(xmlid, files, remains, env=self.env) return asset.to_html(css=css, js=js, debug=debug, async=async, url_for=(values or {}).get('url_for', lambda url: url)) @tools.conditional( @@ -304,7 +307,7 @@ class IrQWeb(models.AbstractModel, QWeb): ) def _get_asset_nodes(self, xmlid, options, css=True, js=True, debug=False, async=False, values=None): files, remains = self._get_asset_content(xmlid, options) - asset = AssetsBundle(xmlid, files, env=self.env) + asset = self.get_asset_bundle(xmlid, files, env=self.env) remains = [node for node in remains if (css and node[0] == 'link') or (js and node[0] != 'link')] return remains + asset.to_node(css=css, js=js, debug=debug, async=async)