From 8ed0c6f54f946b3db1ab9360d6dd25b923c3af8d Mon Sep 17 00:00:00 2001
From: Fabio Barbero <faba@odoo.com>
Date: Thu, 24 Feb 2022 14:49:44 +0000
Subject: [PATCH] [FIX] mail: add check valid email address

Purpose
=======
The method find_or_create of res.partner overwritten in mail does not
take into account the parameter assert_valid_email. This commit adds a
simple check and test.

Task-2799577

closes odoo/odoo#86943

X-original-commit: 7a07b365370d03e963aa7f7d9d19df7ee33e8a1c
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
---
 addons/mail/i18n/mail.pot             | 8 ++++++++
 addons/mail/models/res_partner.py     | 2 ++
 addons/mail/tests/test_res_partner.py | 3 +++
 3 files changed, 13 insertions(+)

diff --git a/addons/mail/i18n/mail.pot b/addons/mail/i18n/mail.pot
index f76a19caec90..6559226b383f 100644
--- a/addons/mail/i18n/mail.pot
+++ b/addons/mail/i18n/mail.pot
@@ -41,6 +41,14 @@ msgstr ""
 msgid "%(activity_name)s: %(summary)s assigned to you"
 msgstr ""
 
+#. module: mail
+#: code:addons/mail/models/res_partner.py:0
+#, python-format
+msgid ""
+"%(email)s is not recognized as a valid email. This is required to create a "
+"new customer."
+msgstr ""
+
 #. module: mail
 #: code:addons/mail/wizard/mail_wizard_invite.py:0
 #, python-format
diff --git a/addons/mail/models/res_partner.py b/addons/mail/models/res_partner.py
index 88eb7184bb6e..e257def67022 100644
--- a/addons/mail/models/res_partner.py
+++ b/addons/mail/models/res_partner.py
@@ -83,6 +83,8 @@ class Partner(models.Model):
             raise ValueError(_('An email is required for find_or_create to work'))
 
         parsed_name, parsed_email = self._parse_partner_name(email)
+        if not parsed_email and assert_valid_email:
+            raise ValueError(_('%(email)s is not recognized as a valid email. This is required to create a new customer.'))
         if parsed_email:
             email_normalized = tools.email_normalize(parsed_email)
             if email_normalized:
diff --git a/addons/mail/tests/test_res_partner.py b/addons/mail/tests/test_res_partner.py
index c2fb68464c29..4a2f55765343 100644
--- a/addons/mail/tests/test_res_partner.py
+++ b/addons/mail/tests/test_res_partner.py
@@ -95,6 +95,9 @@ class TestPartner(MailCommon):
             check_partner=new6, should_create=True
         )
 
+        with self.assertRaises(ValueError):
+            self.env['res.partner'].find_or_create("Raoul chirurgiens-dentistes.fr", assert_valid_email=True)
+
     def test_res_partner_log_portal_group(self):
         Users = self.env['res.users']
         subtype_note = self.env.ref('mail.mt_note')
-- 
GitLab