summaryrefslogtreecommitdiff
path: root/addons/survey
diff options
context:
space:
mode:
authorjvm-odoo <jvm@odoo.com>2020-05-11 10:51:29 +0000
committerjvm-odoo <jvm@odoo.com>2020-05-13 10:47:13 +0000
commitfbfe9109e2e4a4b502ee83a7cdd0d0a0afbc9335 (patch)
tree576061a7287a51eb17a86eb1597839f3d97d2d15 /addons/survey
parenta75bd4d353c3aba2b0272ec390d570d1598d64f8 (diff)
[FIX] survey: fix email sent multiples time
Issue - Install Survey & Contacts - Have 2 contacts with the same email address (e.g. test@example.com) - Create a survey, send it only to that email address Email sent 2 times Cause When looking for partners linked to that email address, we do not provide any limit so the system send the email to all partners found. Solution If I set one email address, I expect one email to be sent. So, the solution would be to apply a limit of 1 when login is not required. OPW-2247693 closes odoo/odoo#51155 X-original-commit: 55b1cc3108d6b672f10ece26db7e13a65ff655d3 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
Diffstat (limited to 'addons/survey')
-rw-r--r--addons/survey/tests/test_survey_invite.py27
-rw-r--r--addons/survey/wizard/survey_invite.py3
2 files changed, 29 insertions, 1 deletions
diff --git a/addons/survey/tests/test_survey_invite.py b/addons/survey/tests/test_survey_invite.py
index ca4307bc46e..6a93ee45d56 100644
--- a/addons/survey/tests/test_survey_invite.py
+++ b/addons/survey/tests/test_survey_invite.py
@@ -194,3 +194,30 @@ class TestSurveyInvite(common.TestSurveyCommon):
set(answers.mapped('email')),
set([self.user_emp.email]))
self.assertEqual(answers.mapped('partner_id'), self.user_emp.partner_id)
+
+ def test_survey_invite_token_by_email_nosignup(self):
+ """
+ Case: have multiples partners with the same email address
+ If I set one email address, I expect one email to be sent
+ """
+
+ first_partner = self.env['res.partner'].create({
+ 'name': 'Test 1',
+ 'email': 'test@example.com',
+ })
+
+ self.env['res.partner'].create({
+ 'name': 'Test 2',
+ 'email': '"Raoul Poilvache" <TEST@example.COM>',
+ })
+
+ self.survey.write({'access_mode': 'token', 'users_login_required': False})
+ action = self.survey.action_send_survey()
+ invite_form = Form(self.env[action['res_model']].with_context(action['context']))
+ invite_form.emails = 'test@example.com'
+ invite = invite_form.save()
+ invite.action_invite()
+
+ answers = self.env['survey.user_input'].search([('survey_id', '=', self.survey.id)])
+ self.assertEqual(len(answers), 1)
+ self.assertEqual(answers.partner_id.display_name, first_partner.display_name)
diff --git a/addons/survey/wizard/survey_invite.py b/addons/survey/wizard/survey_invite.py
index da42a9a6860..b9c6759f246 100644
--- a/addons/survey/wizard/survey_invite.py
+++ b/addons/survey/wizard/survey_invite.py
@@ -252,7 +252,8 @@ class SurveyInvite(models.TransientModel):
partner = False
email_normalized = tools.email_normalize(email)
if email_normalized:
- partner = Partner.search([('email_normalized', '=', email_normalized)])
+ limit = None if self.survey_users_login_required else 1
+ partner = Partner.search([('email_normalized', '=', email_normalized)], limit=limit)
if partner:
valid_partners |= partner
else: