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):