The code from v13 used to look for partners in JS before making the RPC, which was much faster, and also gave better results by returning partners that were already known and therefore more likely to be selected. The same logic is reintroduced here, and further improved to take into account all known partners and sort them according to the likeliness they will be selected based on various criteria. task-2413776 closes odoo/odoo#68045 X-original-commit: 930e090ced8134c3819a5a87b9052467ba23e8e4 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com> Co-authored-by: Sébastien Theys <seb@odoo.com>
24 lines
876 B
Python
24 lines
876 B
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models
|
|
from odoo.exceptions import AccessError
|
|
|
|
|
|
class Partner(models.Model):
|
|
|
|
_inherit = ['res.partner']
|
|
|
|
def name_get(self):
|
|
""" Override to allow an employee to see its private address in his profile.
|
|
This avoids to relax access rules on `res.parter` and to add an `ir.rule`.
|
|
(advantage in both security and performance).
|
|
Use a try/except instead of systematically checking to minimize the impact on performance.
|
|
"""
|
|
try:
|
|
return super(Partner, self).name_get()
|
|
except AccessError as e:
|
|
if len(self) == 1 and self in self.env.user.employee_ids.mapped('address_home_id'):
|
|
return super(Partner, self.sudo()).name_get()
|
|
raise e
|