diff --git a/addons/im_livechat/controllers/main.py b/addons/im_livechat/controllers/main.py index 7344588d4f1..a37a53d6b5e 100644 --- a/addons/im_livechat/controllers/main.py +++ b/addons/im_livechat/controllers/main.py @@ -17,7 +17,7 @@ class LivechatController(http.Controller): def livechat_lib(self, ext, **kwargs): # _get_asset return the bundle html code (script and link list) but we want to use the attachment content bundle = 'im_livechat.external_lib' - files, _ = request.env["ir.qweb"]._get_asset_content(bundle, options=request.context) + files, _ = request.env["ir.qweb"]._get_asset_content(bundle) asset = AssetsBundle(bundle, files) mock_attachment = getattr(asset, ext)() diff --git a/addons/web/tests/test_assets.py b/addons/web/tests/test_assets.py index 234b8f22ea5..bdfbfa9c41c 100644 --- a/addons/web/tests/test_assets.py +++ b/addons/web/tests/test_assets.py @@ -31,7 +31,7 @@ class TestAssetsGenerateTimeCommon(odoo.tests.TransactionCase): start_t = time.time() css = assets_type == 'css' js = assets_type == 'js' - self.env['ir.qweb']._generate_asset_nodes(bundle, options={}, css=css, js=js) + self.env['ir.qweb']._generate_asset_nodes(bundle, css=css, js=js) yield (f'{bundle}.{assets_type}', time.time() - start_t) except ValueError: _logger.info('Error detected while generating bundle %r %s', bundle, assets_type) diff --git a/addons/web/tests/test_js.py b/addons/web/tests/test_js.py index 402f4af8073..4e8ffe71736 100644 --- a/addons/web/tests/test_js.py +++ b/addons/web/tests/test_js.py @@ -24,7 +24,7 @@ class WebSuite(odoo.tests.HttpCase): # redefinied it as a minimal proxy template. self.env.ref('web.layout').write({'arch_db': ''}) - assets = self.env['ir.qweb']._get_asset_content(suite, options={})[0] + assets = self.env['ir.qweb']._get_asset_content(suite)[0] if len(assets) == 0: self.fail("No assets found in the given test suite") diff --git a/addons/web_editor/controllers/main.py b/addons/web_editor/controllers/main.py index 42c66e1de2d..3c2ce05ee50 100644 --- a/addons/web_editor/controllers/main.py +++ b/addons/web_editor/controllers/main.py @@ -367,7 +367,7 @@ class Web_Editor(http.Controller): # Loop through bundle files to search for file info files_data = [] - for file_info in request.env["ir.qweb"]._get_asset_content(asset_name, {})[0]: + for file_info in request.env["ir.qweb"]._get_asset_content(asset_name)[0]: if file_info["atype"] != resources_type_info['mimetype']: continue url = file_info["url"] @@ -557,7 +557,7 @@ class Web_Editor(http.Controller): if re.match('^o-color-([1-5])$', css_color_value): if not bundle_css: bundle = 'web.assets_frontend' - files, _ = request.env["ir.qweb"]._get_asset_content(bundle, options=request.context) + files, _ = request.env["ir.qweb"]._get_asset_content(bundle) asset = AssetsBundle(bundle, files) bundle_css = asset.css().index_content color_search = re.search(r'(?i)--%s:\s+(%s|%s)' % (css_color_value, regex_hex, regex_rgba), bundle_css) diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index b1871faac5d..2411754bab0 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -526,11 +526,10 @@ class Website(Home): """ Reloads asset bundles and returns their unique URLs. """ - context = dict(request.context) return { - 'web.assets_common': request.env['ir.qweb']._get_asset_link_urls('web.assets_common', options=context), - 'web.assets_frontend': request.env['ir.qweb']._get_asset_link_urls('web.assets_frontend', options=context), - 'website.assets_editor': request.env['ir.qweb']._get_asset_link_urls('website.assets_editor', options=context), + 'web.assets_common': request.env['ir.qweb']._get_asset_link_urls('web.assets_common'), + 'web.assets_frontend': request.env['ir.qweb']._get_asset_link_urls('web.assets_frontend'), + 'website.assets_editor': request.env['ir.qweb']._get_asset_link_urls('website.assets_editor'), } @http.route(['/website/make_scss_custo'], type='json', auth='user', website=True) diff --git a/odoo/addons/base/models/ir_qweb.py b/odoo/addons/base/models/ir_qweb.py index e8525c80a40..f7f66d1c754 100644 --- a/odoo/addons/base/models/ir_qweb.py +++ b/odoo/addons/base/models/ir_qweb.py @@ -192,7 +192,7 @@ class IrQWeb(models.AbstractModel, QWeb): code = self._flushText(options, indent) code.append(self._indent(dedent(""" - t_call_assets_nodes = self._get_asset_nodes(%(xmlid)s, compile_options, css=%(css)s, js=%(js)s, debug=values.get("debug"), async_load=%(async_load)s, defer_load=%(defer_load)s, lazy_load=%(lazy_load)s, media=%(media)s) + t_call_assets_nodes = self._get_asset_nodes(%(xmlid)s, css=%(css)s, js=%(js)s, debug=values.get("debug"), async_load=%(async_load)s, defer_load=%(defer_load)s, lazy_load=%(lazy_load)s, media=%(media)s) for index, (tagName, attrs, content) in enumerate(t_call_assets_nodes): if index: yield '\\n ' @@ -227,42 +227,42 @@ class IrQWeb(models.AbstractModel, QWeb): def get_asset_bundle(self, bundle_name, files, env=None, css=True, js=True): return AssetsBundle(bundle_name, files, env=env, css=css, js=js) - def _get_asset_nodes(self, bundle, options, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, media=None): + def _get_asset_nodes(self, bundle, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, media=None): """Generates asset nodes. If debug=assets, the assets will be regenerated when a file which composes them has been modified. Else, the assets will be generated only once and then stored in cache. """ if debug and 'assets' in debug: - return self._generate_asset_nodes(bundle, options, css, js, debug, async_load, defer_load, lazy_load, media) + return self._generate_asset_nodes(bundle, css, js, debug, async_load, defer_load, lazy_load, media) else: - return self._generate_asset_nodes_cache(bundle, options, css, js, debug, async_load, defer_load, lazy_load, media) + return self._generate_asset_nodes_cache(bundle, css, js, debug, async_load, defer_load, lazy_load, media) @tools.conditional( # in non-xml-debug mode we want assets to be cached forever, and the admin can force a cache clear # by restarting the server after updating the source code (or using the "Clear server cache" in debug tools) 'xml' not in tools.config['dev_mode'], - tools.ormcache_context('bundle', 'options.get("lang", "en_US")', 'css', 'js', 'debug', 'async_load', 'defer_load', 'lazy_load', keys=("website_id",)), + tools.ormcache_context('bundle', 'css', 'js', 'debug', 'async_load', 'defer_load', 'lazy_load', keys=("website_id", "lang")), ) - def _generate_asset_nodes_cache(self, bundle, options, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, media=None): - return self._generate_asset_nodes(bundle, options, css, js, debug, async_load, defer_load, lazy_load, media) + def _generate_asset_nodes_cache(self, bundle, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, media=None): + return self._generate_asset_nodes(bundle, css, js, debug, async_load, defer_load, lazy_load, media) - def _generate_asset_nodes(self, bundle, options, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, media=None): + def _generate_asset_nodes(self, bundle, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, media=None): nodeAttrs = None if css and media: nodeAttrs = { 'media': media, } - files, remains = self._get_asset_content(bundle, options, nodeAttrs) + files, remains = self._get_asset_content(bundle, nodeAttrs) asset = self.get_asset_bundle(bundle, files, env=self.env, css=css, js=js) remains = [node for node in remains if (css and node[0] == 'link') or (js and node[0] == 'script')] return remains + asset.to_node(css=css, js=js, debug=debug, async_load=async_load, defer_load=defer_load, lazy_load=lazy_load) - def _get_asset_link_urls(self, bundle, options): - asset_nodes = self._get_asset_nodes(bundle, options, js=False) + def _get_asset_link_urls(self, bundle): + asset_nodes = self._get_asset_nodes(bundle, js=False) return [node[1]['href'] for node in asset_nodes if node[0] == 'link'] - @tools.ormcache_context('bundle', 'options.get("lang", "en_US")', keys=("website_id",)) - def _get_asset_content(self, bundle, options, nodeAttrs=None): + @tools.ormcache_context('bundle', keys=("website_id", "lang")) + def _get_asset_content(self, bundle, nodeAttrs=None): asset_paths = self.env['ir.asset']._get_asset_paths(bundle=bundle, css=True, js=True) files = [] diff --git a/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py b/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py index 4e8ac8d00c0..c10e35fa064 100644 --- a/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py +++ b/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py @@ -127,7 +127,7 @@ class TestJavascriptAssetsBundle(FileTouchable): def _get_asset(self, bundle, env=None): env = (env or self.env) - files, _ = env['ir.qweb']._get_asset_content(bundle, env.context) + files, _ = env['ir.qweb']._get_asset_content(bundle) return AssetsBundle(bundle, files, env=env) def _any_ira_for_bundle(self, extension, lang=None): @@ -764,7 +764,7 @@ class TestAssetsBundleWithIRAMock(FileTouchable): self.patch(IrAttachment, 'unlink', unlink) def _get_asset(self): - files, _ = self.env['ir.qweb']._get_asset_content(self.stylebundle_name, {}) + files, _ = self.env['ir.qweb']._get_asset_content(self.stylebundle_name) return AssetsBundle(self.stylebundle_name, files, env=self.env) def _bundle(self, asset, should_create, should_unlink):