[FIX] website: get the name of the visitor through the related field

Since [1] if the partner related to a visitor belongs to a company that
cannot be accessed by the current user, an error is raised when trying
to display the list of visitors.

This commit makes the name obtained through an additional sudo on the
`partner_id` record which might not be accessible to the current user.
This is equivalent to using the `name` field of visitor, except that
accessing the `partner_id` field will fail if `website.visitor` itself
cannot be accessed.

Steps to reproduce:
- Go to Settings / Companies
- Create a second company
- Go to Website / Reporting / Visitors
- Select "Edwin Hansen"
- Navigate to its linked partner in the contact field
"Gemini Furniture, Edwin Hansen"
- Navigate to its company "Gemini Furniture"
- In the "Sales & Purchase" tab, assign the second company as the
Company
- Save (this creates an error - but it is saved)
- Go to Website / Reporting / Visitors

=> The page was not displayed and an access error message was
displayed.

[1]: https://github.com/odoo/odoo/commit/d348bed1ad9d3d16b295f013f015706be6c07820

opw-3462104

closes odoo/odoo#134190

X-original-commit: a75673217aef2ffaaa93585526dc1e647a270495
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
This commit is contained in:
Benoit Socias
2023-09-04 19:58:32 +00:00
committed by Romain Derie
parent 07f17b0c80
commit 679ede2c32
+3 -1
View File
@@ -86,7 +86,9 @@ class WebsiteVisitor(models.Model):
@api.depends('partner_id')
def _compute_display_name(self):
for record in self:
record.display_name = record.partner_id.name or _('Website Visitor #%s', record.id)
# Accessing name of partner through sudo to avoid infringing
# record rule if partner belongs to another company.
record.display_name = record.partner_id.sudo().name or _('Website Visitor #%s', record.id)
@api.depends('access_token')
def _compute_partner_id(self):