+ website_crm_partner_assign that overrides website_partner Implement partner slug validation for accurate URL redirection Prior to this commit, partner slugs weren't verified, leading to Google indexing outdated partner URLs even after renaming. With this change, when the virtual slug (fake slug sinc no read access on res.partner) differs from the actual one, redirection to the correct URL is enforced. closes odoo/odoo#151824 X-original-commit: a28a9c3a5e635f45e0bfee402b7f0775735adeb7 Signed-off-by: Romain Derie (rde) <rde@odoo.com> Signed-off-by: Jérémy Kersten <jke@odoo.com>
28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
from odoo import http
|
|
from odoo.addons.http_routing.models.ir_http import unslug, slug
|
|
from odoo.http import request
|
|
|
|
|
|
class WebsitePartnerPage(http.Controller):
|
|
|
|
# Do not use semantic controller due to SUPERUSER_ID
|
|
@http.route(['/partners/<partner_id>'], type='http', auth="public", website=True)
|
|
def partners_detail(self, partner_id, **post):
|
|
current_slug = partner_id
|
|
_, partner_id = unslug(partner_id)
|
|
if partner_id:
|
|
partner_sudo = request.env['res.partner'].sudo().browse(partner_id)
|
|
is_website_restricted_editor = request.env['res.users'].has_group('website.group_website_restricted_editor')
|
|
if partner_sudo.exists() and (partner_sudo.website_published or is_website_restricted_editor):
|
|
if slug(partner_sudo) != current_slug:
|
|
return request.redirect('/partners/%s' % slug(partner_sudo))
|
|
values = {
|
|
'main_object': partner_sudo,
|
|
'partner': partner_sudo,
|
|
'edit_page': False
|
|
}
|
|
return request.render("website_partner.partner_page", values)
|
|
raise request.not_found()
|