[FIX] {test_}mass_mailing: exclude 'cancel' traces from ratio
ISSUE ===== clicks_ratio uses a formula that is not relevant as it accounts for emails that could not lead to a click. It divides the number of clicks by the total of expected emails instead of substracting cancelled ones. HOW TO REPRODUCE ================ 1. Create a mailing M 2. Create a mailing list of 5 contacts with same email adress 3. Create a link tracker associated to M 4. Send -> 4 emails will be canceled as same email is used 5. Click the link. 6. Ratio of 'clicked' on the mailing view will be 20% instead of 100% FIX === Only use mailing traces where trace status is not 'cancelled'; aligning the formula to other stats set in _compute_statistics. The formula becomes: CR = # clicks / (# total_traces - # cancel_traces) A test on statistics is modified to check this behavior. Task-3607171 closes odoo/odoo#148551 X-original-commit: 5dc7c6102f1d23ffa02d3b6aff3c518204fb4566 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
@@ -289,6 +289,7 @@ class MassMailing(models.Model):
|
||||
FROM mailing_trace AS stats
|
||||
LEFT OUTER JOIN link_tracker_click AS clicks ON clicks.mailing_trace_id = stats.id
|
||||
WHERE stats.mass_mailing_id IN %s
|
||||
AND stats.trace_status != 'cancel'
|
||||
GROUP BY stats.mass_mailing_id
|
||||
""", [tuple(self.ids) or (None,)])
|
||||
mass_mailing_data = self.env.cr.dictfetchall()
|
||||
|
||||
@@ -29,7 +29,8 @@ class TestMailingStatistics(TestMassMailCommon):
|
||||
@users('user_marketing')
|
||||
@mute_logger('odoo.addons.mass_mailing.models.mailing', 'odoo.addons.mail.models.mail_mail', 'odoo.addons.mail.models.mail_thread')
|
||||
def test_mailing_statistics(self):
|
||||
target_records = self._create_mailing_test_records(model='mailing.test.blacklist', count=10)
|
||||
target_records = self._create_mailing_test_records(model='mailing.test.blacklist', count=11)
|
||||
target_records[10]['email_from'] = False # void email should lead to a 'cancel' trace_status
|
||||
mailing = self.env['mailing.mailing'].browse(self.mailing_bl.ids)
|
||||
mailing.write({'mailing_domain': [('id', 'in', target_records.ids)], 'user_id': self.user_marketing_2.id})
|
||||
mailing.action_put_in_queue()
|
||||
@@ -45,7 +46,9 @@ class TestMailingStatistics(TestMassMailCommon):
|
||||
self.gateway_mail_click(mailing, target_records[3], 'https://www.odoo.be')
|
||||
|
||||
# check mailing statistics
|
||||
self.assertEqual(mailing.canceled, 1)
|
||||
self.assertEqual(mailing.clicked, 3)
|
||||
self.assertEqual(mailing.clicks_ratio, 30)
|
||||
self.assertEqual(mailing.delivered, 10)
|
||||
self.assertEqual(mailing.opened, 4)
|
||||
self.assertEqual(mailing.opened_ratio, 40)
|
||||
|
||||
Reference in New Issue
Block a user