[FIX] base: remove options parameters

Regarding previous commit, the option parameter can be removed
from _get_asset_content api, followed by a nice snowball effect.

Part-of: odoo/odoo#75248
This commit is contained in:
Xavier-Do
2021-08-26 10:21:10 +00:00
parent 2921f60055
commit fdaee845d5
7 changed files with 23 additions and 24 deletions
+1 -1
View File
@@ -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)()
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -24,7 +24,7 @@ class WebSuite(odoo.tests.HttpCase):
# redefinied it as a minimal proxy template.
self.env.ref('web.layout').write({'arch_db': '<t t-name="web.layout"><head><meta charset="utf-8"/><t t-esc="head"/></head></t>'})
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")
+2 -2
View File
@@ -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)
+3 -4
View File
@@ -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)
+13 -13
View File
@@ -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 = []
@@ -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):