[IMP] assetsbundle: cleanup api and dead code
Extrac a method to generate the "language extra part", redundant in this file. Also removes some dead code about html_url Part-of: odoo/odoo#131353
This commit is contained in:
@@ -118,7 +118,7 @@ class AssetsBundle(object):
|
||||
css_attachments = self.css(is_minified=not self.is_debug_assets) or []
|
||||
for attachment in css_attachments:
|
||||
if self.is_debug_assets:
|
||||
href = self.get_debug_asset_url(extra='rtl' if self.rtl else 'ltr',
|
||||
href = self.get_debug_asset_url(extra=self.extra('css'),
|
||||
name=css_attachments.name,
|
||||
extension='')
|
||||
else:
|
||||
@@ -189,7 +189,15 @@ class AssetsBundle(object):
|
||||
for fpath in to_delete:
|
||||
attachments._file_delete(fpath)
|
||||
|
||||
def clean_attachments(self, extension, keep_url):
|
||||
def extra(self, extension):
|
||||
if self.is_css(extension):
|
||||
return 'rtl' if self.rtl else 'ltr'
|
||||
return '-'
|
||||
|
||||
def is_css(self, extension):
|
||||
return extension in ['css', 'min.css', 'css.map']
|
||||
|
||||
def clean_attachments(self, extension, keep_url, extra):
|
||||
""" Takes care of deleting any outdated ir.attachment records associated to a bundle before
|
||||
saving a fresh one.
|
||||
|
||||
@@ -200,15 +208,16 @@ class AssetsBundle(object):
|
||||
must exclude the current bundle.
|
||||
"""
|
||||
ira = self.env['ir.attachment']
|
||||
is_css = extension in ['css', 'min.css', 'css.map']
|
||||
to_clean_pattern = self.get_asset_url(
|
||||
extra='rtl' if is_css and self.rtl else 'ltr' if is_css else '-',
|
||||
unique='%',
|
||||
extra=extra,
|
||||
name=self.name,
|
||||
extension=extension,
|
||||
)
|
||||
domain = [
|
||||
('url', '=like', to_clean_pattern),
|
||||
('url', '!=', keep_url)
|
||||
('url', '!=', keep_url),
|
||||
('public', '=', True),
|
||||
]
|
||||
attachments = ira.sudo().search(domain)
|
||||
# avoid to invalidate cache if it's already empty (mainly useful for test)
|
||||
@@ -233,9 +242,8 @@ class AssetsBundle(object):
|
||||
else: the url contains a version equal to that of the self.get_version(type)
|
||||
=> web/assets/self.get_version(type)/name.extension.
|
||||
"""
|
||||
is_css = extension in ['css', 'min.css', 'css.map']
|
||||
unique = "%" if ignore_version else self.get_version('css' if is_css else 'js')
|
||||
extra = 'rtl' if is_css and self.rtl else 'ltr' if is_css else '-'
|
||||
unique = "%" if ignore_version else self.get_version('css' if self.is_css(extension) else 'js')
|
||||
extra = self.extra(extension)
|
||||
url_pattern = self.get_asset_url(
|
||||
unique=unique,
|
||||
extra=extra, # not sure about css.map
|
||||
@@ -318,16 +326,17 @@ class AssetsBundle(object):
|
||||
# and allow to only clear the current direction bundle
|
||||
# (this applies to css bundles only)
|
||||
fname = '%s.%s' % (self.name, extension)
|
||||
is_css = extension in ['css', 'min.css', 'css.map']
|
||||
mimetype = (
|
||||
'text/css' if extension in ['css', 'min.css'] else
|
||||
'text/xml' if extension in ['xml', 'min.xml'] else
|
||||
'application/json' if extension in ['js.map', 'css.map'] else
|
||||
'application/javascript'
|
||||
)
|
||||
extra = self.extra(extension)
|
||||
unique = self.get_version('css' if self.is_css(extension) else 'js')
|
||||
url = self.get_asset_url(
|
||||
unique=self.get_version('css' if is_css else 'js'),
|
||||
extra='rtl' if is_css and self.rtl else 'ltr' if is_css else '-',
|
||||
unique=unique,
|
||||
extra=extra,
|
||||
name=self.name,
|
||||
extension=extension,
|
||||
)
|
||||
@@ -347,7 +356,7 @@ class AssetsBundle(object):
|
||||
if self.env.context.get('commit_assetsbundle') is True:
|
||||
self.env.cr.commit()
|
||||
|
||||
self.clean_attachments(extension, url)
|
||||
self.clean_attachments(extension, url, extra)
|
||||
|
||||
# For end-user assets (common and backend), send a message on the bus
|
||||
# to invite the user to refresh their browser
|
||||
@@ -355,7 +364,7 @@ class AssetsBundle(object):
|
||||
self.env['bus.bus']._sendone('broadcast', 'bundle_changed', {
|
||||
'server_version': release.version # Needs to be dynamically imported
|
||||
})
|
||||
_logger.debug('Asset Changed: bundle: %s -- version: %s', self.name, self.get_version('css' if is_css else 'js'))
|
||||
_logger.debug('Asset Changed: bundle: %s -- version: %s', self.name, unique)
|
||||
|
||||
return attachment
|
||||
|
||||
@@ -599,7 +608,7 @@ class AssetsBundle(object):
|
||||
sourcemap_attachment = self.get_attachments('css.map') \
|
||||
or self.save_attachment('css.map', '')
|
||||
debug_asset_url = self.get_debug_asset_url(name=self.name,
|
||||
extra='rtl' if self.rtl else 'ltr')
|
||||
extra=self.extra('css'))
|
||||
generator = SourceMapGenerator(
|
||||
source_root="/".join(
|
||||
[".." for i in range(0, len(debug_asset_url.split("/")) - 2)]
|
||||
@@ -767,7 +776,6 @@ class AssetsBundle(object):
|
||||
|
||||
|
||||
class WebAsset(object):
|
||||
html_url_format = '%s'
|
||||
_content = None
|
||||
_filename = None
|
||||
_ir_attach = None
|
||||
@@ -778,7 +786,6 @@ class WebAsset(object):
|
||||
self.inline = inline
|
||||
self._filename = filename
|
||||
self.url = url
|
||||
self.html_url_args = url
|
||||
self._last_modified = last_modified
|
||||
if not inline and not url:
|
||||
raise Exception("An asset should either be inlined or url linked, defined in bundle '%s'" % bundle.name)
|
||||
@@ -796,10 +803,6 @@ class WebAsset(object):
|
||||
def name(self):
|
||||
return '<inline asset>' if self.inline else self.url
|
||||
|
||||
@property
|
||||
def html_url(self):
|
||||
return self.html_url_format % self.html_url_args
|
||||
|
||||
def stat(self):
|
||||
if not (self.inline or self._filename or self._ir_attach):
|
||||
try:
|
||||
@@ -966,10 +969,6 @@ class StylesheetAsset(WebAsset):
|
||||
def __init__(self, *args, rtl=False, **kw):
|
||||
self.rtl = rtl
|
||||
super().__init__(*args, **kw)
|
||||
if self.rtl and self.url:
|
||||
self.html_url_args = self.url.rsplit('.', 1)
|
||||
self.html_url_format = '%%s/%s/%s.%%s' % ('rtl', self.bundle.name)
|
||||
self.html_url_args = tuple(self.html_url_args)
|
||||
|
||||
@property
|
||||
def bundle_version(self):
|
||||
@@ -1024,11 +1023,6 @@ class StylesheetAsset(WebAsset):
|
||||
class PreprocessedCSS(StylesheetAsset):
|
||||
rx_import = None
|
||||
|
||||
def __init__(self, *args, **kw):
|
||||
super().__init__(*args, **kw)
|
||||
self.html_url_args = tuple(self.url.rsplit('/', 1))
|
||||
self.html_url_format = '%%s/%s%s/%%s.css' % ('rtl' if self.rtl else 'ltr', self.bundle.name)
|
||||
|
||||
def get_command(self):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
Reference in New Issue
Block a user