From cfac7b37752d6810272d2b9bb8909add4ca3aaa7 Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Thu, 30 Jan 2020 08:41:08 +0000 Subject: [PATCH] [FIX] web: template inheritance from dotted name A good practice is to always prefix the name of a template by the name of the module it is defined in. So in the case where a template ```xml ``` was inherited by another Before this commit, one should have written ```xml ``` After this commit, it becomes more natural, and one should only write ```xml ``` --- addons/web/controllers/main.py | 3 + addons/web/tests/test_serving_base.py | 191 ++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index bf4e2aaa0fc..798077daf40 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -496,6 +496,9 @@ class HomeStaticTemplateHelpers(object): for template_tree in list(all_templates_tree): if self.NAME_TEMPLATE_DIRECTIVE in template_tree.attrib: template_name = template_tree.attrib[self.NAME_TEMPLATE_DIRECTIVE] + dotted_names = template_name.split('.', 1) + if len(dotted_names) > 1 and dotted_names[0] == addon: + template_name = dotted_names[1] else: # self.template_dict[addon] grows after processing each template template_name = 'anonymous_template_%s' % len(self.template_dict[addon]) diff --git a/addons/web/tests/test_serving_base.py b/addons/web/tests/test_serving_base.py index c6ac2083dbb..09c52df3471 100644 --- a/addons/web/tests/test_serving_base.py +++ b/addons/web/tests/test_serving_base.py @@ -716,6 +716,197 @@ class TestStaticInheritance(TestStaticInheritanceCommon): self.assertXMLEqual(contents, expected) + def test_inherit_from_dotted_tname_1(self): + self.modules = [ + ('module_1_file_1', None, 'module_1'), + ] + self.template_files = { + 'module_1_file_1': b""" + +
+
At first I was afraid
+
+ + +
+ And I grew strong +

And I learned how to get along

+
+
+
+
+ """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + +
+
At first I was afraid
+
+
+ And I grew strong +

And I learned how to get along

+
+
+ """ + + self.assertXMLEqual(contents, expected) + + def test_inherit_from_dotted_tname_2(self): + self.modules = [ + ('module_1_file_1', None, 'module_1'), + ] + self.template_files = { + 'module_1_file_1': b""" + +
+
At first I was afraid
+
+ + +
+ And I grew strong +

And I learned how to get along

+
+
+
+
+ """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + +
+
At first I was afraid
+
+
+ And I grew strong +

And I learned how to get along

+
+
+ """ + + self.assertXMLEqual(contents, expected) + + def test_inherit_from_dotted_tname_2bis(self): + self.modules = [ + ('module_1_file_1', None, 'module_1'), + ] + self.template_files = { + 'module_1_file_1': b""" + +
+
At first I was afraid
+
+ + +
+ And I grew strong +

And I learned how to get along

+
+
+
+
+ """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + +
+
At first I was afraid
+
+
+ And I grew strong +

And I learned how to get along

+
+
+ """ + + self.assertXMLEqual(contents, expected) + + def test_inherit_from_dotted_tname_2ter(self): + self.modules = [ + ('module_1_file_1', None, 'module_1'), + ] + self.template_files = { + 'module_1_file_1': b""" + +
+
At first I was afraid
+
+ + +
+ And I grew strong +

And I learned how to get along

+
+
+
+
+ """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + +
+
At first I was afraid
+
+
+ And I grew strong +

And I learned how to get along

+
+
+ """ + + self.assertXMLEqual(contents, expected) + + def test_inherit_from_dotted_tname_3(self): + self.modules = [ + ('module_1_file_1', None, 'module_1'), + ('module_2_file_1', None, 'module_2'), + ] + self.template_files = { + 'module_1_file_1': b""" + +
+
At first I was afraid
+
+
+ """, + + 'module_2_file_1': b""" + + + +
+ And I grew strong +

And I learned how to get along

+
+
+
+
+ """ + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + +
+
At first I was afraid
+
+
+ And I grew strong +

And I learned how to get along

+
+
+ """ + + self.assertXMLEqual(contents, expected) + @tagged('-standard', 'static_templates_performance') class TestStaticInheritancePerformance(TestStaticInheritanceCommon):