diff options
| author | Thibault Delavallée <tde@odoo.com> | 2019-07-17 09:26:42 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2019-07-17 15:39:06 +0000 |
| commit | 2896aad34e797b6ca65a8efe3c5d71f31500a9a2 (patch) | |
| tree | 81f2298b04182860e84f2ca9815f313cc0c75ffc /addons/mass_mailing/report/mailing_trace_report.py | |
| parent | 20dfba6e11ac4553509c1a3516c6453b8f8023e7 (diff) | |
[REF] mass_mailing: rename mail.mail.statistics and reporting model
PURPOSE
Mass mailing is currently a bit messy. As SMS will be added as a way to notify
people in mass through SMS let us take this opportunity to somehow clean this
application: organization, light code cleaning, model renaming.
SPECIFICATIONS
Rename mail.mail.statistics to mailing.trace and mail.statistics.report
to mail.trace.report. Rationale :
* mail.mail.statistics is linked to mail.mail model. Soon this model will
hold data related to SMS sending. It makes sense to be broader in the
naming;
* mailing.trace is more inlined with marketing.trace model that is the
marketing automation model using it in marketing automation (enterprise
application);
* mailing.trace is shorter to write;
* mail.statistics.report model should sense to be updated at the same
time;
MIGRATION
mail.mail.statistics model -> mailing.trace
mail_mail_statistics table -> mailing_trace
mail.statistics.report model -> mail.trace.report
fields updated (w column change)
* link.tracker.click: mail_stat_id -> mailing_trace_id
fields updated (no column change)
* mail.mail: statistics_ids -> mailing_trace_ids
* mail.mass_mailing: statistics_ids -> mailing_trace_ids
LINKS
Task ID 2037906
Preparing task ID 1997464 (SMS addition in mass mailing)
PR #34938
Diffstat (limited to 'addons/mass_mailing/report/mailing_trace_report.py')
| -rw-r--r-- | addons/mass_mailing/report/mailing_trace_report.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/addons/mass_mailing/report/mailing_trace_report.py b/addons/mass_mailing/report/mailing_trace_report.py new file mode 100644 index 00000000000..2afa8906097 --- /dev/null +++ b/addons/mass_mailing/report/mailing_trace_report.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models, tools + + +class MailingTraceReport(models.Model): + _name = 'mailing.trace.report' + _auto = False + _description = 'Mass Mailing Statistics' + + scheduled_date = fields.Datetime(string='Scheduled Date', readonly=True) + name = fields.Char(string='Mass Mail', readonly=True) + campaign = fields.Char(string='Mass Mail Campaign', readonly=True) + sent = fields.Integer(readonly=True) + delivered = fields.Integer(readonly=True) + opened = fields.Integer(readonly=True) + bounced = fields.Integer(readonly=True) + replied = fields.Integer(readonly=True) + clicked = fields.Integer(readonly=True) + state = fields.Selection([('draft', 'Draft'), ('test', 'Tested'), ('done', 'Sent')], + string='Status', readonly=True) + email_from = fields.Char('From', readonly=True) + + def init(self): + """Mass Mail Statistical Report: based on mailing.trace that models the various + statistics collected for each mailing, and mail.mass_mailing model that models the + various mailing performed. """ + tools.drop_view_if_exists(self.env.cr, 'mailing_trace_report') + self.env.cr.execute(""" + CREATE OR REPLACE VIEW mailing_trace_report AS ( + SELECT + min(ms.id) as id, + ms.scheduled as scheduled_date, + utm_source.name as name, + utm_campaign.name as campaign, + count(ms.bounced) as bounced, + count(ms.sent) as sent, + (count(ms.sent) - count(ms.bounced)) as delivered, + count(ms.opened) as opened, + count(ms.replied) as replied, + count(ms.clicked) as clicked, + mm.state, + mm.email_from + FROM + mailing_trace as ms + left join mail_mass_mailing as mm ON (ms.mass_mailing_id=mm.id) + left join mail_mass_mailing_campaign as mc ON (ms.mass_mailing_campaign_id=mc.id) + left join utm_campaign as utm_campaign ON (mc.campaign_id = utm_campaign.id) + left join utm_source as utm_source ON (mm.source_id = utm_source.id) + GROUP BY ms.scheduled, utm_source.name, utm_campaign.name, mm.state, mm.email_from + )""") |
