diff --git a/addons/mass_mailing/__manifest__.py b/addons/mass_mailing/__manifest__.py
index 21ecbd5ff5d..48b401d0b55 100644
--- a/addons/mass_mailing/__manifest__.py
+++ b/addons/mass_mailing/__manifest__.py
@@ -23,6 +23,7 @@
'data': [
'security/mass_mailing_security.xml',
'security/ir.model.access.csv',
+ 'data/digest_data.xml',
'data/mail_data.xml',
'data/mailing_data_templates.xml',
'data/mass_mailing_data.xml',
diff --git a/addons/mass_mailing/controllers/main.py b/addons/mass_mailing/controllers/main.py
index f835071aa44..47e5f8d59bc 100644
--- a/addons/mass_mailing/controllers/main.py
+++ b/addons/mass_mailing/controllers/main.py
@@ -195,3 +195,18 @@ class MassMailController(http.Controller):
record.sudo().message_post(body=_("Feedback from %(email)s: %(feedback)s", email=email, feedback=feedback))
return bool(records)
return 'error'
+
+ @http.route('/mailing/report/unsubscribe', type='http', website=True, auth='public')
+ def turn_off_mailing_reports(self, token, user_id):
+ if not token or not user_id:
+ raise werkzeug.exceptions.NotFound()
+ user_id = int(user_id)
+ correct_token = consteq(token, request.env['mailing.mailing']._get_unsubscribe_token(user_id))
+ user = request.env['res.users'].sudo().browse(user_id)
+ if correct_token and user.has_group('mass_mailing.group_mass_mailing_user'):
+ request.env['ir.config_parameter'].sudo().set_param('mass_mailing.mass_mailing_reports', False)
+ if user.has_group('base.group_system'):
+ menu_id = request.env.ref('mass_mailing.menu_mass_mailing_global_settings').id
+ return request.render('mass_mailing.mailing_report_deactivated', {'menu_id': menu_id})
+ return request.render('mass_mailing.mailing_report_deactivated')
+ raise werkzeug.exceptions.NotFound()
diff --git a/addons/mass_mailing/data/digest_data.xml b/addons/mass_mailing/data/digest_data.xml
new file mode 100644
index 00000000000..b4291107141
--- /dev/null
+++ b/addons/mass_mailing/data/digest_data.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+ –
+
+ Turn off Mailing Reports
+
+
+
+
+
+
diff --git a/addons/mass_mailing/data/mailing_data_templates.xml b/addons/mass_mailing/data/mailing_data_templates.xml
index 8022779537b..dbc544cd5f5 100644
--- a/addons/mass_mailing/data/mailing_data_templates.xml
+++ b/addons/mass_mailing/data/mailing_data_templates.xml
@@ -60,7 +60,7 @@
%Click (Total) |
- |
+ |
|
diff --git a/addons/mass_mailing/data/mass_mailing_data.xml b/addons/mass_mailing/data/mass_mailing_data.xml
index 90dedf14351..c10040c48e1 100644
--- a/addons/mass_mailing/data/mass_mailing_data.xml
+++ b/addons/mass_mailing/data/mass_mailing_data.xml
@@ -1,6 +1,8 @@
+
+
Mail Marketing: Process queue
diff --git a/addons/mass_mailing/models/mailing.py b/addons/mass_mailing/models/mailing.py
index 12460592403..40414588a1f 100644
--- a/addons/mass_mailing/models/mailing.py
+++ b/addons/mass_mailing/models/mailing.py
@@ -965,14 +965,15 @@ class MassMailing(models.Model):
'kpi_mail_required': not mass_mailing.sent_date,
})
- mailings = self.env['mailing.mailing'].search([
- ('kpi_mail_required', '=', True),
- ('state', '=', 'done'),
- ('sent_date', '<=', fields.Datetime.now() - relativedelta(days=1)),
- ('sent_date', '>=', fields.Datetime.now() - relativedelta(days=5)),
- ])
- if mailings:
- mailings._action_send_statistics()
+ if self.env['ir.config_parameter'].sudo().get_param('mass_mailing.mass_mailing_reports'):
+ mailings = self.env['mailing.mailing'].search([
+ ('kpi_mail_required', '=', True),
+ ('state', '=', 'done'),
+ ('sent_date', '<=', fields.Datetime.now() - relativedelta(days=1)),
+ ('sent_date', '>=', fields.Datetime.now() - relativedelta(days=5)),
+ ])
+ if mailings:
+ mailings._action_send_statistics()
# ------------------------------------------------------
# STATISTICS
@@ -1003,16 +1004,20 @@ class MassMailing(models.Model):
'mailing_type': mailing_type,
},
)
+ rendering_data = {
+ 'body': tools.html_sanitize(link_trackers_body),
+ 'company': mail_company,
+ 'user': mail_user,
+ 'display_mobile_banner': True,
+ ** mailing._prepare_statistics_email_values(),
+ }
+ if mail_user.has_group('mass_mailing.group_mass_mailing_user'):
+ rendering_data['mailing_report_token'] = self._get_unsubscribe_token(mail_user.id)
+ rendering_data['user_id'] = mail_user.id
rendered_body = self.env['ir.qweb']._render(
'digest.digest_mail_main',
- {
- 'body': tools.html_sanitize(link_trackers_body),
- 'company': mail_company,
- 'user': mail_user,
- 'display_mobile_banner': True,
- ** mailing._prepare_statistics_email_values()
- },
+ rendering_data
)
full_mail = self.env['mail.render.mixin']._render_encapsulate(
@@ -1108,6 +1113,11 @@ class MassMailing(models.Model):
if self.mailing_type == 'mail':
return _('Emails')
+ def _get_unsubscribe_token(self, user_id):
+ """Generate a secure hash for this user. It allows to opt out from
+ mailing reports while keeping some security in that process. """
+ return tools.hmac(self.env(su=True), 'mailing-report-deactivated', user_id)
+
# ------------------------------------------------------
# TOOLS
# ------------------------------------------------------
diff --git a/addons/mass_mailing/models/res_config_settings.py b/addons/mass_mailing/models/res_config_settings.py
index aba6d87e2b5..00059b9f699 100644
--- a/addons/mass_mailing/models/res_config_settings.py
+++ b/addons/mass_mailing/models/res_config_settings.py
@@ -14,6 +14,8 @@ class ResConfigSettings(models.TransientModel):
show_blacklist_buttons = fields.Boolean(string="Blacklist Option when Unsubscribing",
config_parameter='mass_mailing.show_blacklist_buttons',
help="""Allow the recipient to manage himself his state in the blacklist via the unsubscription page.""")
+ mass_mailing_reports = fields.Boolean(string='24H Stat Mailing Reports', config_parameter='mass_mailing.mass_mailing_reports',
+ help='Check how well your mailing is doing a day after it has been sent.')
@api.onchange('mass_mailing_outgoing_mail_server')
def _onchange_mass_mailing_outgoing_mail_server(self):
diff --git a/addons/mass_mailing/views/mass_mailing_templates_portal.xml b/addons/mass_mailing/views/mass_mailing_templates_portal.xml
index 54130b3818e..6e1dbadb8cb 100644
--- a/addons/mass_mailing/views/mass_mailing_templates_portal.xml
+++ b/addons/mass_mailing/views/mass_mailing_templates_portal.xml
@@ -1,5 +1,29 @@
+
+
+
+
+
+ Mailing Reports Turned Off
+
+
+ Mailing Reports have been turned off for all users.
+ If needed, they can be turned back on from the
+
+ Settings Menu.
+
+
+ Settings Menu.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check how well your mailing is doing a day after it has been sent
+
+
+
|