[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
This commit is contained in:
Samus CTO 2015-04-03 09:55:31 +02:00 committed by Martin Trigaux
parent fc58529616
commit 6490c62e5d
3 changed files with 6 additions and 3 deletions

View File

@ -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]

View File

@ -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]

View File

@ -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])