diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 8b01d038805..1327c6af2a6 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -1327,7 +1327,7 @@ class Website(models.Model): router = http.root.get_db_router(request.db).bind('') path = router.build(rule.endpoint, args) if lang != self.default_lang_id: - path = f'/{lang.url_code}{path}' + path = f'/{lang.url_code}{path if path != "/" else ""}' except (NotFound, AccessError, MissingError): # The build method returns a quoted URL so convert in this case for consistency. path = urls.url_quote_plus(request.httprequest.environ['REQUEST_URI'], safe='/') diff --git a/addons/website/tests/test_base_url.py b/addons/website/tests/test_base_url.py index 171dfc35c1d..40335dcb7b4 100644 --- a/addons/website/tests/test_base_url.py +++ b/addons/website/tests/test_base_url.py @@ -85,7 +85,7 @@ class TestBaseUrl(TestUrlCommon): self._assertCanonical('/?debug=1', self.website.get_base_url() + '/') self._assertCanonical('/a-page', self.website.get_base_url() + '/a-page') self._assertCanonical('/en_US', self.website.get_base_url() + '/') - self._assertCanonical('/fr_FR', self.website.get_base_url() + '/fr/') + self._assertCanonical('/fr_FR', self.website.get_base_url() + '/fr') @odoo.tests.tagged('-at_install', 'post_install') diff --git a/addons/website/tests/test_lang_url.py b/addons/website/tests/test_lang_url.py index 6ae29b49310..f655880fe99 100644 --- a/addons/website/tests/test_lang_url.py +++ b/addons/website/tests/test_lang_url.py @@ -24,7 +24,7 @@ class TestLangUrl(HttpCase): def test_01_url_lang(self): with MockRequest(self.env, website=self.website): - self.assertEqual(url_lang('', '[lang]'), '/[lang]/mockrequest/', "`[lang]` is used to be replaced in the url_return after installing a language, it should not be replaced or removed.") + self.assertEqual(url_lang('', '[lang]'), '/[lang]/mockrequest', "`[lang]` is used to be replaced in the url_return after installing a language, it should not be replaced or removed.") def test_02_url_redirect(self): url = '/fr_WHATEVER/contactus' diff --git a/addons/website/tools.py b/addons/website/tools.py index 3dbd0d7c582..87337c7e0b8 100644 --- a/addons/website/tools.py +++ b/addons/website/tools.py @@ -14,7 +14,7 @@ from odoo.tools.misc import DotDict, frozendict @contextlib.contextmanager def MockRequest( - env, *, path='/mockrequest/', routing=True, multilang=True, + env, *, path='/mockrequest', routing=True, multilang=True, context=frozendict(), cookies=frozendict(), country_code=None, website=None, remote_addr=HOST, environ_base=None, # website_sale diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 20ce8c7c17a..db3e44e7e42 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -106,18 +106,18 @@ - - - - - - - - + + + + + + + + - +