From 4f39a80e7619870fb7f7655823fa5eecc67936a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 24 May 2022 14:03:11 +0000 Subject: [PATCH] [MOV] mass_mailing(_sms): split models and views PURPOSE Reorganize addon according to guidelines, helping finding and updating code. SPECIFICATIONS Move subscription model into its own file, to ease future improvements. Do the same for its views. Also move menu entries into a specific file for menus, allowing to easily understand menu organization in mass mailing. A duplicated menu about link trackers in SMS is also removed. Task-2864264 (Mass Mailing Module Reorganization) Part-of: odoo/odoo#92509 --- addons/mass_mailing/__manifest__.py | 5 +- addons/mass_mailing/models/__init__.py | 1 + addons/mass_mailing/models/mailing_contact.py | 43 -------- .../models/mailing_contact_subscription.py | 47 ++++++++ .../report/mailing_trace_report_views.xml | 4 - .../mass_mailing/views/link_tracker_views.xml | 8 -- .../mailing_contact_subscription_views.xml | 53 +++++++++ .../views/mailing_contact_views.xml | 58 +--------- .../mass_mailing/views/mailing_list_views.xml | 4 - .../views/mailing_mailing_views.xml | 6 - .../views/mailing_mailing_views_menus.xml | 28 ----- addons/mass_mailing/views/mailing_menus.xml | 103 ++++++++++++++++++ .../views/mailing_trace_views.xml | 6 - .../views/res_config_settings_views.xml | 3 - .../mass_mailing/views/utm_campaign_views.xml | 16 --- addons/mass_mailing_sms/__manifest__.py | 5 +- .../report/mailing_trace_report_views.xml | 5 - .../views/link_tracker_views.xml | 8 -- .../views/mailing_contact_views.xml | 6 - .../views/mailing_list_views.xml | 5 - .../views/mailing_mailing_views.xml | 5 - .../views/mailing_sms_menus.xml | 16 ++- .../views/utm_campaign_views.xml | 5 - 23 files changed, 224 insertions(+), 216 deletions(-) create mode 100644 addons/mass_mailing/models/mailing_contact_subscription.py create mode 100644 addons/mass_mailing/views/mailing_contact_subscription_views.xml delete mode 100644 addons/mass_mailing/views/mailing_mailing_views_menus.xml create mode 100644 addons/mass_mailing/views/mailing_menus.xml delete mode 100644 addons/mass_mailing_sms/views/link_tracker_views.xml diff --git a/addons/mass_mailing/__manifest__.py b/addons/mass_mailing/__manifest__.py index b9ec211e7d0..9580bce45b9 100644 --- a/addons/mass_mailing/__manifest__.py +++ b/addons/mass_mailing/__manifest__.py @@ -36,16 +36,17 @@ 'wizard/mailing_list_merge_views.xml', 'wizard/mailing_mailing_test_views.xml', 'wizard/mailing_mailing_schedule_date_views.xml', + 'report/mailing_trace_report_views.xml', 'views/mailing_filter_views.xml', - 'views/mailing_mailing_views_menus.xml', 'views/mailing_trace_views.xml', 'views/link_tracker_views.xml', 'views/mailing_contact_views.xml', + 'views/mailing_contact_subscription_views.xml', 'views/mailing_list_views.xml', 'views/mailing_mailing_views.xml', 'views/res_config_settings_views.xml', 'views/utm_campaign_views.xml', - 'report/mailing_trace_report_views.xml', + 'views/mailing_menus.xml', 'views/assets.xml', 'views/mass_mailing_templates_portal.xml', 'views/themes_templates.xml', diff --git a/addons/mass_mailing/models/__init__.py b/addons/mass_mailing/models/__init__.py index 62a584ceda8..3ad476609b3 100644 --- a/addons/mass_mailing/models/__init__.py +++ b/addons/mass_mailing/models/__init__.py @@ -3,6 +3,7 @@ from . import ir_model from . import link_tracker +from . import mailing_contact_subscription from . import mailing_contact from . import mailing_list from . import mailing_trace diff --git a/addons/mass_mailing/models/mailing_contact.py b/addons/mass_mailing/models/mailing_contact.py index 717019aa886..1fa42ad9135 100644 --- a/addons/mass_mailing/models/mailing_contact.py +++ b/addons/mass_mailing/models/mailing_contact.py @@ -6,49 +6,6 @@ from odoo.exceptions import UserError from odoo.osv import expression -class MassMailingContactListRel(models.Model): - """ Intermediate model between mass mailing list and mass mailing contact - Indicates if a contact is opted out for a particular list - """ - _name = 'mailing.contact.subscription' - _description = 'Mass Mailing Subscription Information' - _table = 'mailing_contact_list_rel' - _rec_name = 'contact_id' - _order = 'list_id DESC, contact_id DESC' - - contact_id = fields.Many2one('mailing.contact', string='Contact', ondelete='cascade', required=True) - list_id = fields.Many2one('mailing.list', string='Mailing List', ondelete='cascade', required=True) - opt_out = fields.Boolean( - string='Opt Out', - default=False, - help='The contact has chosen not to receive mails anymore from this list') - unsubscription_date = fields.Datetime(string='Unsubscription Date') - message_bounce = fields.Integer(related='contact_id.message_bounce', store=False, readonly=False) - is_blacklisted = fields.Boolean(related='contact_id.is_blacklisted', store=False, readonly=False) - - _sql_constraints = [ - ('unique_contact_list', 'unique (contact_id, list_id)', - 'A mailing contact cannot subscribe to the same mailing list multiple times.') - ] - - @api.model_create_multi - def create(self, vals_list): - now = fields.Datetime.now() - for vals in vals_list: - if 'opt_out' in vals and 'unsubscription_date' not in vals: - vals['unsubscription_date'] = now if vals['opt_out'] else False - if vals.get('unsubscription_date'): - vals['opt_out'] = True - return super().create(vals_list) - - def write(self, vals): - if 'opt_out' in vals and 'unsubscription_date' not in vals: - vals['unsubscription_date'] = fields.Datetime.now() if vals['opt_out'] else False - if vals.get('unsubscription_date'): - vals['opt_out'] = True - return super(MassMailingContactListRel, self).write(vals) - - class MassMailingContact(models.Model): """Model of a contact. This model is different from the partner model because it holds only some basic information: name, email. The purpose is to diff --git a/addons/mass_mailing/models/mailing_contact_subscription.py b/addons/mass_mailing/models/mailing_contact_subscription.py new file mode 100644 index 00000000000..c20c504587b --- /dev/null +++ b/addons/mass_mailing/models/mailing_contact_subscription.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models + + +class MassMailingContactListRel(models.Model): + """ Intermediate model between mass mailing list and mass mailing contact + Indicates if a contact is opted out for a particular list + """ + _name = 'mailing.contact.subscription' + _description = 'Mass Mailing Subscription Information' + _table = 'mailing_contact_list_rel' + _rec_name = 'contact_id' + _order = 'list_id DESC, contact_id DESC' + + contact_id = fields.Many2one('mailing.contact', string='Contact', ondelete='cascade', required=True) + list_id = fields.Many2one('mailing.list', string='Mailing List', ondelete='cascade', required=True) + opt_out = fields.Boolean( + string='Opt Out', + default=False, + help='The contact has chosen not to receive mails anymore from this list') + unsubscription_date = fields.Datetime(string='Unsubscription Date') + message_bounce = fields.Integer(related='contact_id.message_bounce', store=False, readonly=False) + is_blacklisted = fields.Boolean(related='contact_id.is_blacklisted', store=False, readonly=False) + + _sql_constraints = [ + ('unique_contact_list', 'unique (contact_id, list_id)', + 'A mailing contact cannot subscribe to the same mailing list multiple times.') + ] + + @api.model_create_multi + def create(self, vals_list): + now = fields.Datetime.now() + for vals in vals_list: + if 'opt_out' in vals and 'unsubscription_date' not in vals: + vals['unsubscription_date'] = now if vals['opt_out'] else False + if vals.get('unsubscription_date'): + vals['opt_out'] = True + return super().create(vals_list) + + def write(self, vals): + if 'opt_out' in vals and 'unsubscription_date' not in vals: + vals['unsubscription_date'] = fields.Datetime.now() if vals['opt_out'] else False + if vals.get('unsubscription_date'): + vals['opt_out'] = True + return super(MassMailingContactListRel, self).write(vals) diff --git a/addons/mass_mailing/report/mailing_trace_report_views.xml b/addons/mass_mailing/report/mailing_trace_report_views.xml index 464c9f09327..01b94169f32 100644 --- a/addons/mass_mailing/report/mailing_trace_report_views.xml +++ b/addons/mass_mailing/report/mailing_trace_report_views.xml @@ -95,8 +95,4 @@

- - diff --git a/addons/mass_mailing/views/link_tracker_views.xml b/addons/mass_mailing/views/link_tracker_views.xml index 615b4c27f24..ef227f04f75 100644 --- a/addons/mass_mailing/views/link_tracker_views.xml +++ b/addons/mass_mailing/views/link_tracker_views.xml @@ -78,12 +78,4 @@ - - - - diff --git a/addons/mass_mailing/views/mailing_contact_subscription_views.xml b/addons/mass_mailing/views/mailing_contact_subscription_views.xml new file mode 100644 index 00000000000..d59e92300f4 --- /dev/null +++ b/addons/mass_mailing/views/mailing_contact_subscription_views.xml @@ -0,0 +1,53 @@ + + + + mailing.contact.subscription.view.form + mailing.contact.subscription + 10 + +
+ + + + + + +
+
+
+ + + mailing.contact.subscription.view.tree + mailing.contact.subscription + + + + + + + + + + + + + mailing.contact.subscription.view.search + mailing.contact.subscription + + + + + + + + +
diff --git a/addons/mass_mailing/views/mailing_contact_views.xml b/addons/mass_mailing/views/mailing_contact_views.xml index 30a491b311d..a8ce9c32af7 100644 --- a/addons/mass_mailing/views/mailing_contact_views.xml +++ b/addons/mass_mailing/views/mailing_contact_views.xml @@ -1,58 +1,6 @@ - - - mailing.contact.subscription.view.form - mailing.contact.subscription - 10 - -
- - - - - - -
-
-
- - - mailing.contact.subscription.view.tree - mailing.contact.subscription - - - - - - - - - - - - - mailing.contact.subscription.view.search - mailing.contact.subscription - - - - - - - - - - + mailing.contact.view.search mailing.contact @@ -241,8 +189,4 @@

- -
diff --git a/addons/mass_mailing/views/mailing_list_views.xml b/addons/mass_mailing/views/mailing_list_views.xml index db3b5c34528..22de8850c81 100644 --- a/addons/mass_mailing/views/mailing_list_views.xml +++ b/addons/mass_mailing/views/mailing_list_views.xml @@ -293,8 +293,4 @@

- - diff --git a/addons/mass_mailing/views/mailing_mailing_views.xml b/addons/mass_mailing/views/mailing_mailing_views.xml index 7e8745fb0e2..8a755956fc3 100644 --- a/addons/mass_mailing/views/mailing_mailing_views.xml +++ b/addons/mass_mailing/views/mailing_mailing_views.xml @@ -718,10 +718,4 @@ mailing.mailing form - - - diff --git a/addons/mass_mailing/views/mailing_mailing_views_menus.xml b/addons/mass_mailing/views/mailing_mailing_views_menus.xml deleted file mode 100644 index db7aa2b7dc8..00000000000 --- a/addons/mass_mailing/views/mailing_mailing_views_menus.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/addons/mass_mailing/views/mailing_menus.xml b/addons/mass_mailing/views/mailing_menus.xml new file mode 100644 index 00000000000..20f92317129 --- /dev/null +++ b/addons/mass_mailing/views/mailing_menus.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/addons/mass_mailing/views/mailing_trace_views.xml b/addons/mass_mailing/views/mailing_trace_views.xml index ec50f179d98..29de31fffc2 100644 --- a/addons/mass_mailing/views/mailing_trace_views.xml +++ b/addons/mass_mailing/views/mailing_trace_views.xml @@ -140,10 +140,4 @@

- - - diff --git a/addons/mass_mailing/views/res_config_settings_views.xml b/addons/mass_mailing/views/res_config_settings_views.xml index d3b8715b288..0ef06f24ac0 100644 --- a/addons/mass_mailing/views/res_config_settings_views.xml +++ b/addons/mass_mailing/views/res_config_settings_views.xml @@ -78,7 +78,4 @@ inline {'module' : 'mass_mailing', 'bin_size': False} - - diff --git a/addons/mass_mailing/views/utm_campaign_views.xml b/addons/mass_mailing/views/utm_campaign_views.xml index 8b01bc0f94f..b93eb906b05 100644 --- a/addons/mass_mailing/views/utm_campaign_views.xml +++ b/addons/mass_mailing/views/utm_campaign_views.xml @@ -111,20 +111,4 @@ [('is_auto_campaign', '=', False)] - - - - - - diff --git a/addons/mass_mailing_sms/__manifest__.py b/addons/mass_mailing_sms/__manifest__.py index 8346e4c4d77..80fbd96f4cf 100644 --- a/addons/mass_mailing_sms/__manifest__.py +++ b/addons/mass_mailing_sms/__manifest__.py @@ -15,15 +15,14 @@ 'data': [ 'data/utm_data.xml', 'security/ir.model.access.csv', - 'views/mailing_sms_menus.xml', + 'report/mailing_trace_report_views.xml', 'views/mailing_list_views.xml', 'views/mailing_contact_views.xml', 'views/mailing_trace_views.xml', 'views/mailing_mailing_views.xml', - 'views/link_tracker_views.xml', 'views/mass_mailing_sms_templates_portal.xml', 'views/utm_campaign_views.xml', - 'report/mailing_trace_report_views.xml', + 'views/mailing_sms_menus.xml', 'wizard/sms_composer_views.xml', 'wizard/mailing_sms_test_views.xml', ], diff --git a/addons/mass_mailing_sms/report/mailing_trace_report_views.xml b/addons/mass_mailing_sms/report/mailing_trace_report_views.xml index 4a84bd7df6e..430aedd4246 100644 --- a/addons/mass_mailing_sms/report/mailing_trace_report_views.xml +++ b/addons/mass_mailing_sms/report/mailing_trace_report_views.xml @@ -83,9 +83,4 @@ - - - - - diff --git a/addons/mass_mailing_sms/views/link_tracker_views.xml b/addons/mass_mailing_sms/views/link_tracker_views.xml deleted file mode 100644 index 30ab3459e02..00000000000 --- a/addons/mass_mailing_sms/views/link_tracker_views.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/addons/mass_mailing_sms/views/mailing_contact_views.xml b/addons/mass_mailing_sms/views/mailing_contact_views.xml index 0d6c1acf46b..012722dae27 100644 --- a/addons/mass_mailing_sms/views/mailing_contact_views.xml +++ b/addons/mass_mailing_sms/views/mailing_contact_views.xml @@ -91,10 +91,4 @@

- - - - - - diff --git a/addons/mass_mailing_sms/views/mailing_list_views.xml b/addons/mass_mailing_sms/views/mailing_list_views.xml index 16ccdf0ccad..a469d9a899f 100644 --- a/addons/mass_mailing_sms/views/mailing_list_views.xml +++ b/addons/mass_mailing_sms/views/mailing_list_views.xml @@ -42,9 +42,4 @@

- - - - - diff --git a/addons/mass_mailing_sms/views/mailing_mailing_views.xml b/addons/mass_mailing_sms/views/mailing_mailing_views.xml index 14decacb220..6d336dcd25e 100644 --- a/addons/mass_mailing_sms/views/mailing_mailing_views.xml +++ b/addons/mass_mailing_sms/views/mailing_mailing_views.xml @@ -281,9 +281,4 @@ - - - - - diff --git a/addons/mass_mailing_sms/views/mailing_sms_menus.xml b/addons/mass_mailing_sms/views/mailing_sms_menus.xml index b60d678c5b5..c60a4ebf881 100644 --- a/addons/mass_mailing_sms/views/mailing_sms_menus.xml +++ b/addons/mass_mailing_sms/views/mailing_sms_menus.xml @@ -10,6 +10,7 @@ @@ -23,19 +24,30 @@ - + + + + @@ -55,7 +67,7 @@ groups="mass_mailing.group_mass_mailing_user"/> - -