# -*- 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