diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 6e78e9c63fd..2e424380c37 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -1865,6 +1865,9 @@ class MailThread(models.AbstractModel): done_partners += [partner for partner in partners] remaining = [email for email in normalized_emails if email not in [partner.email_normalized for partner in done_partners]] + # prioritize current user if exists in list + done_partners.sort(key=lambda p: self.env.user.partner_id != p) + # iterate and keep ordering partners = [] for contact in emails: diff --git a/addons/mail/tests/test_mail_tools.py b/addons/mail/tests/test_mail_tools.py index f66a586a93e..a2b220fa69e 100644 --- a/addons/mail/tests/test_mail_tools.py +++ b/addons/mail/tests/test_mail_tools.py @@ -46,7 +46,7 @@ class TestMailTools(MailCommon): '', ] - @users('employee') + @users('admin') def test_find_partner_from_emails(self): Partner = self.env['res.partner'] test_partner = Partner.browse(self.test_partner.ids) @@ -107,6 +107,12 @@ class TestMailTools(MailCommon): found = Partner._mail_find_partner_from_emails(['alfred_astaire@test.example.com']) self.assertEqual(found, [self.env['res.partner']]) + # test users with same email, priority given to current user + # -------------------------------------------------------------- + self.user_employee.sudo().write({'email': '"Alfred Astaire" <%s>' % self.env.user.partner_id.email_normalized}) + found = self.env['res.partner']._mail_find_partner_from_emails([self.env.user.partner_id.email_formatted]) + self.assertEqual(found, [self.env.user.partner_id]) + @users('employee') def test_tools_email_re(self): expected = [