Skip to content

Commit

Permalink
fixup! website_canonical_url: refactor and improve tests
Browse files Browse the repository at this point in the history
  • Loading branch information
simahawk committed May 11, 2018
1 parent 26648c2 commit 1ae0479
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 37 deletions.
20 changes: 7 additions & 13 deletions website_canonical_url/models/website.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,23 +43,17 @@ def _get_canonical_domain(self):
def _get_canonical_relative_url(self, req=None):
req = req or request
parsed = urlparse(req.httprequest.path)
# here we get the full path and qstring args stripped out already
canonical_url = parsed.path
lang = (
getattr(req, 'lang', None) or
self.env.lang or
req.website.default_lang_code
)
# build lang path if request lang does not match default lang
lang_path = ''
if lang != req.website.default_lang_code:
if req.lang != req.website.default_lang_code:
# eg: language is `it_IT` but main lang is `en_US`
lang_path = '/%s/' % lang
if lang_path and not canonical_url.startswith(lang_path):
# not main lang: make sure lang is in path
canonical_url = lang_path + canonical_url.lstrip('/')
# Special case for rerouted requests to root path
lang_path = '/%s/' % req.lang
# handle special case for rerouted requests to root path
if self._is_root_page(canonical_url, lang_path=lang_path):
# redirect to root if main lang otherwise to language root
canonical_url = '/' if not lang_path else lang_path.rstrip('/')
# redirect to root if main lang matches otherwise to language root
canonical_url = '/' if not lang_path else lang_path
return canonical_url

def _is_root_page(self, url, lang_path=''):
Expand Down
6 changes: 3 additions & 3 deletions website_canonical_url/tests/test_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def test_canonical_relative_url_home_special_case_lang_no_match(self):
self.website.default_lang_id = self.env.ref('base.lang_it')
self.assertEqual(
self.website._get_canonical_relative_url(req=req),
'/en_US'
'/en_US/'
)

def test_canonical_url(self):
Expand All @@ -99,7 +99,7 @@ def test_canonical_url_default_lang_no_match(self):
req = FakeRequest(self.website, '/en_US/my/lovely/page?foo=baz')
self.website.default_lang_id = self.env.ref('base.lang_it')
self.assertEqual(
self.website.with_context(lang='en_US').get_canonical_url(req=req),
self.website.get_canonical_url(req=req),
'https://oh.yeah/en_US/my/lovely/page'
)

Expand All @@ -117,5 +117,5 @@ def test_canonical_url_home_special_case_no_match(self):
self.website, '/it_IT/page/homepage?foo=baz', lang='it_IT')
self.assertEqual(
self.website.get_canonical_url(req=req),
'https://oh.yeah/it_IT'
'https://oh.yeah/it_IT/'
)
39 changes: 18 additions & 21 deletions website_canonical_url/views/website_views.xml
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>

<record id="view_website_form" model="ir.ui.view">
<field name="name">website canonical form</field>
<field name="model">website</field>
<field name="inherit_id" ref="website.view_website_form" />
<field name="arch" type="xml">
<field name="domain" position="after">
<field name="canonical_domain" placeholder="https://mydomain.com" />
</field>
</field>
</record>

<record id="view_website_config_settings" model="ir.ui.view">
<field name="name">website settings canonical form</field>
<field name="model">website.config.settings</field>
<field name="inherit_id" ref="website.view_website_config_settings" />
<field name="arch" type="xml">
<field name="website_name" position="after">
<field name="canonical_domain" placeholder="https://mydomain.com" />
</field>
</field>
</record>
<record id="view_website_form" model="ir.ui.view">
<field name="name">website canonical form</field>
<field name="model">website</field>
<field name="inherit_id" ref="website.view_website_form" />
<field name="arch" type="xml">
<field name="domain" position="after">
<field name="canonical_domain" placeholder="https://mydomain.com" /></field>
</field>
</record>
<record id="view_website_config_settings" model="ir.ui.view">
<field name="name">website settings canonical form</field>
<field name="model">website.config.settings</field>
<field name="inherit_id" ref="website.view_website_config_settings" />
<field name="arch" type="xml">
<field name="website_name" position="after">
<field name="canonical_domain" placeholder="https://mydomain.com" /></field>
</field>
</record>

</odoo>

0 comments on commit 1ae0479

Please sign in to comment.