diff options
| -rw-r--r-- | addons/web/controllers/main.py | 3 | ||||
| -rw-r--r-- | addons/web/tests/test_serving_base.py | 191 |
2 files changed, 194 insertions, 0 deletions
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""" + <templates id="template" xml:space="preserve"> + <form t-name="module_1.template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <t t-name="template_1_2" t-inherit="template_1_1.dot" t-inherit-mode="primary"> + <xpath expr="." position="replace"> + <div overriden-attr="overriden"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </xpath> + </t> + </templates> + """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + <templates> + <form t-name="module_1.template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <div overriden-attr="overriden" t-name="template_1_2"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </templates> + """ + + 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""" + <templates id="template" xml:space="preserve"> + <form t-name="template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <t t-name="template_1_2" t-inherit="template_1_1.dot" t-inherit-mode="primary"> + <xpath expr="." position="replace"> + <div overriden-attr="overriden"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </xpath> + </t> + </templates> + """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + <templates> + <form t-name="template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <div overriden-attr="overriden" t-name="template_1_2"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </templates> + """ + + 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""" + <templates id="template" xml:space="preserve"> + <form t-name="template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <t t-name="template_1_2" t-inherit="module_1.template_1_1.dot" t-inherit-mode="primary"> + <xpath expr="." position="replace"> + <div overriden-attr="overriden"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </xpath> + </t> + </templates> + """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + <templates> + <form t-name="template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <div overriden-attr="overriden" t-name="template_1_2"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </templates> + """ + + 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""" + <templates id="template" xml:space="preserve"> + <form t-name="module_1" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <t t-name="template_1_2" t-inherit="module_1" t-inherit-mode="primary"> + <xpath expr="." position="replace"> + <div overriden-attr="overriden"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </xpath> + </t> + </templates> + """, + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + <templates> + <form t-name="module_1" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <div overriden-attr="overriden" t-name="template_1_2"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </templates> + """ + + 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""" + <templates id="template" xml:space="preserve"> + <form t-name="module_1.template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + </templates> + """, + + 'module_2_file_1': b""" + <templates id="template" xml:space="preserve"> + <t t-name="template_2_1" t-inherit="module_1.template_1_1.dot" t-inherit-mode="primary"> + <xpath expr="." position="replace"> + <div overriden-attr="overriden"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </xpath> + </t> + </templates> + """ + } + + contents = HomeStaticTemplateHelpers.get_qweb_templates(addons=self._get_module_names(), debug=True) + expected = b""" + <templates> + <form t-name="module_1.template_1_1.dot" random-attr="gloria"> + <div>At first I was afraid</div> + </form> + <div overriden-attr="overriden" t-name="template_2_1"> + And I grew strong + <p>And I learned how to get along</p> + </div> + </templates> + """ + + self.assertXMLEqual(contents, expected) + @tagged('-standard', 'static_templates_performance') class TestStaticInheritancePerformance(TestStaticInheritanceCommon): |
