diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py index 50e09e678bd..836d55b3304 100644 --- a/addons/website/models/ir_qweb.py +++ b/addons/website/models/ir_qweb.py @@ -112,8 +112,11 @@ class IrQWeb(models.AbstractModel): return atts name = self.URL_ATTRS.get(tagName) - if request and name and name in atts: - atts[name] = url_for(atts[name]) + if request: + if name and name in atts: + atts[name] = url_for(atts[name]) + # Adapt background-image URL in the same way as image src. + atts = self._adapt_style_background_image(atts, url_for) if not website.cdn_activated: return atts @@ -125,8 +128,11 @@ class IrQWeb(models.AbstractModel): atts[name] = website.get_cdn_url(atts[name]) if data_name in atts: atts[data_name] = website.get_cdn_url(atts[data_name]) - if isinstance(atts.get('style'), str) and 'background-image' in atts['style']: - atts = OrderedDict(atts) - atts['style'] = re_background_image.sub(lambda m: '%s%s' % (m.group(1), website.get_cdn_url(m.group(2))), atts['style']) + atts = self._adapt_style_background_image(atts, website.get_cdn_url) return atts + + def _adapt_style_background_image(self, atts, url_adapter): + if isinstance(atts.get('style'), str) and 'background-image' in atts['style']: + atts['style'] = re_background_image.sub(lambda m: '%s%s' % (m[1], url_adapter(m[2])), atts['style']) + return atts