diff --git a/addons/website/models/ir_qweb.py b/addons/website/models/ir_qweb.py index 664838afe77..0e93876be45 100644 --- a/addons/website/models/ir_qweb.py +++ b/addons/website/models/ir_qweb.py @@ -34,8 +34,8 @@ class QWeb(models.AbstractModel): 'img': 'src', } - def get_asset_bundle(self, xmlid, files, remains=None, env=None): - return AssetsBundleMultiWebsite(xmlid, files, remains=remains, env=env) + def get_asset_bundle(self, xmlid, files, env=None): + return AssetsBundleMultiWebsite(xmlid, files, env=env) def _post_processing_att(self, tagName, atts, options): if atts.get('data-no-post-process'): diff --git a/odoo/addons/base/models/assetsbundle.py b/odoo/addons/base/models/assetsbundle.py index 4afc9a76a56..043d4999c23 100644 --- a/odoo/addons/base/models/assetsbundle.py +++ b/odoo/addons/base/models/assetsbundle.py @@ -86,8 +86,7 @@ class AssetsBundle(object): rx_preprocess_imports = re.compile("""(@import\s?['"]([^'"]+)['"](;?))""") rx_css_split = re.compile("\/\*\! ([a-f0-9-]+) \*\/") - # remains attribute is depreciated and will remove after v11 - def __init__(self, name, files, remains=None, env=None): + def __init__(self, name, files, env=None): self.name = name self.env = request.env if env is None else env self.javascripts = [] @@ -110,26 +109,6 @@ class AssetsBundle(object): elif f['atype'] == 'text/javascript': self.javascripts.append(JavascriptAsset(self, url=f['url'], filename=f['filename'], inline=f['content'])) - # depreciated and will remove after v11 - def to_html(self, sep=None, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, url_for=(lambda url: url)): - nodes = self.to_node(css=css, js=js, debug=debug, async_load=async_load, defer_load=defer_load, lazy_load=lazy_load) - - if sep is None: - sep = u'\n ' - response = [] - for tagName, attributes, content in nodes: - html = u"<%s " % tagName - for name, value in attributes.items(): - if value or isinstance(value, str): - html += u' %s="%s"' % (name, escape(to_text(value))) - if content is None: - html += u'/>' - else: - html += u'>%s' % (escape(to_text(content)), tagName) - response.append(html) - - return sep + sep.join(response) - def to_node(self, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False): """ :returns [(tagName, attributes, content)] if the tag is auto close @@ -599,19 +578,6 @@ class WebAsset(object): except Exception: raise AssetNotFound("Could not find %s" % self.name) - # depreciated and will remove after v11 - def to_html(self): - tagName, attributes, content = self.to_node() - html = u"<%s " % tagName - for name, value in attributes.items(): - if value or isinstance(value, str): - html += u' %s="%s"' % (name, escape(to_text(value))) - if content is None: - html += u'/>' - else: - html += u'>%s' % (escape(to_text(content)), tagName) - return html - def to_node(self): raise NotImplementedError() diff --git a/odoo/addons/base/models/ir_qweb.py b/odoo/addons/base/models/ir_qweb.py index 43aa67e6805..0ddb06744e0 100644 --- a/odoo/addons/base/models/ir_qweb.py +++ b/odoo/addons/base/models/ir_qweb.py @@ -160,7 +160,7 @@ class IrQWeb(models.AbstractModel, QWeb): if len(el): raise SyntaxError("t-call-assets cannot contain children nodes") - # nodes = self._get_asset(xmlid, options, css=css, js=js, debug=values.get('debug'), async=async, values=values) + # nodes = self._get_asset_nodes(xmlid, options, css=css, js=js, debug=values.get('debug'), async=async, values=values) # # for index, (tagName, t_attrs, content) in enumerate(nodes): # if index: @@ -282,18 +282,8 @@ 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'], - tools.ormcache_context('xmlid', 'options.get("lang", "en_US")', 'css', 'js', 'debug', 'async_load', 'defer_load', 'lazy_load', keys=("website_id",)), - ) - def _get_asset(self, xmlid, options, css=True, js=True, debug=False, async_load=False, defer_load=False, lazy_load=False, values=None): - files, remains = self._get_asset_content(xmlid, options) - asset = self.get_asset_bundle(xmlid, files, remains, env=self.env) - return asset.to_html(css=css, js=js, debug=debug, async_load=async_load, defer_load=defer_load, lazy_load=lazy_load, url_for=(values or {}).get('url_for', lambda url: url)) + def get_asset_bundle(self, xmlid, files, env=None): + return AssetsBundle(xmlid, files, env=env) @tools.conditional( # in non-xml-debug mode we want assets to be cached forever, and the admin can force a cache clear diff --git a/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py b/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py index c315f76a6f1..de9d4693493 100644 --- a/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py +++ b/odoo/addons/test_assetsbundle/tests/test_assetsbundle.py @@ -50,6 +50,13 @@ class TestJavascriptAssetsBundle(TransactionCase): domain = [('url', '=like', url)] return self.env['ir.attachment'].search(domain) + def _node_to_list(self, nodes): + res = [] + for index, (tagName, t_attrs, content) in enumerate(nodes): + for name, value in t_attrs.items(): + res.append(value) + return res + def test_01_generation(self): """ Checks that a bundle creates an ir.attachment record when its `js` method is called for the first time. @@ -154,7 +161,8 @@ class TestJavascriptAssetsBundle(TransactionCase): """ Checks that a bundle rendered in debug mode outputs non-minified assets. """ debug_bundle = self._get_asset(self.jsbundle_xmlid) - content = debug_bundle.to_html(debug='assets') + nodes = debug_bundle.to_node(debug='assets') + content = self._node_to_list(nodes) # find back one of the original asset file self.assertIn('/test_assetsbundle/static/src/js/test_jsfile1.js', content) @@ -234,7 +242,8 @@ class TestJavascriptAssetsBundle(TransactionCase): """ Check that a bundle in debug mode outputs non-minified assets. """ debug_bundle = self._get_asset(self.cssbundle_xmlid) - content = debug_bundle.to_html(debug='assets') + nodes = debug_bundle.to_node(debug='assets') + content = self._node_to_list(nodes) # find back one of the original asset file self.assertIn('/test_assetsbundle/static/src/css/test_cssfile1.css', content) @@ -256,8 +265,9 @@ class TestJavascriptAssetsBundle(TransactionCase): self.assertEquals(ira0.store_fname, ira1.store_fname) # the ir.attachment records should be deduplicated in the bundle's content - content = bundle0.to_html() - self.assertEqual(content.count('test_assetsbundle.bundle2.css'), 1) + nodes = bundle0.to_node() + content = self._node_to_list(nodes) + self.assertEqual(content[2].count('test_assetsbundle.bundle2.css'), 1) # Language direction specific tests @@ -448,7 +458,8 @@ class TestJavascriptAssetsBundle(TransactionCase): """ Checks that a bundle rendered in debug mode(assets) with right to left language direction stores css files in assets bundle. """ debug_bundle = self._get_asset(self.cssbundle_xmlid, env=self.env(context={'lang': 'ar_SY'})) - content = debug_bundle.to_html(debug='assets') + nodes = debug_bundle.to_node(debug='assets') + content = self._node_to_list(nodes) # css file should be available in assets bundle as user's lang direction is rtl self.assertIn('/test_assetsbundle/static/src/css/test_cssfile1/rtl/{0}.css'.format(self.cssbundle_xmlid), content) @@ -562,11 +573,11 @@ class TestAssetsBundleWithIRAMock(TransactionCase): def _get_asset(self): files, remains = self.env['ir.qweb']._get_asset_content(self.stylebundle_xmlid, {}) - return AssetsBundle(self.stylebundle_xmlid, files, remains, env=self.env) + return AssetsBundle(self.stylebundle_xmlid, files, env=self.env) def _bundle(self, asset, should_create, should_unlink): self.counter.clear() - asset.to_html(debug='assets') + asset.to_node(debug='assets') self.assertEquals(self.counter['create'], int(should_create)) self.assertEquals(self.counter['unlink'], int(should_unlink))