From 6490c62e5d7e28a8be62a102b6cdf32f38038728 Mon Sep 17 00:00:00 2001 From: Samus CTO Date: Fri, 3 Apr 2015 09:55:31 +0200 Subject: [PATCH] [FIX] mail: backport of rev 752a07c to 8.0 [FIX] res.partner.find_or_create() should match using =like Otherwise john@connor.com may match sarah.john@connor.com --- addons/email_template/tests/test_mail.py | 4 ++-- openerp/addons/base/res/res_partner.py | 2 +- openerp/addons/base/tests/test_base.py | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/email_template/tests/test_mail.py b/addons/email_template/tests/test_mail.py index c176e00e118..40c76b075a7 100644 --- a/addons/email_template/tests/test_mail.py +++ b/addons/email_template/tests/test_mail.py @@ -192,9 +192,9 @@ class test_message_compose(TestMail): email_template.write(cr, uid, [email_template_id], { 'model_id': user_model_id, 'body_html': '${object.login}', - 'email_to': '${object.email}, c@c', + 'email_to': '${object.email}, c@c.c', 'partner_to': '%i,%i' % (p_b_id, p_c_id), - 'email_cc': 'd@d', + 'email_cc': 'd@d.d', }) # patner by email + partner by id (no double) send_to = [p_a_id, p_b_id, p_c_id, p_d_id] diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 6fbb4fa0f24..061344b9ae3 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -708,7 +708,7 @@ class res_partner(osv.Model, format_address): emails = tools.email_split(email) if emails: email = emails[0] - ids = self.search(cr, uid, [('email','ilike',email)], context=context) + ids = self.search(cr, uid, [('email','=ilike',email)], context=context) if not ids: return self.name_create(cr, uid, email, context=context)[0] return ids[0] diff --git a/openerp/addons/base/tests/test_base.py b/openerp/addons/base/tests/test_base.py index b34451d0396..275154a8f03 100644 --- a/openerp/addons/base/tests/test_base.py +++ b/openerp/addons/base/tests/test_base.py @@ -36,6 +36,9 @@ class test_base(common.TransactionCase): partner_id, dummy = self.res_partner.name_create(cr, uid, email) found_id = self.res_partner.find_or_create(cr, uid, email) self.assertEqual(partner_id, found_id, 'find_or_create failed') + partner_id2, dummy2 = self.res_partner.name_create(cr, uid, 'sarah.john@connor.com') + found_id2 = self.res_partner.find_or_create(cr, uid, 'john@connor.com') + self.assertNotEqual(partner_id2, found_id2, 'john@connor.com match sarah.john@connor.com') new_id = self.res_partner.find_or_create(cr, uid, self.samples[1][0]) self.assertTrue(new_id > partner_id, 'find_or_create failed - should have created new one') new_id2 = self.res_partner.find_or_create(cr, uid, self.samples[2][0])