From 7c6b594c054491b80f1d91303e37ec6a0ae3a4a7 Mon Sep 17 00:00:00 2001 From: cubells Date: Thu, 24 Nov 2016 19:12:16 +0100 Subject: [PATCH 1/5] [MIG] mass_mailing module migration script * Created openupgrade_analysis_work.txt * Updated module coverage document --- .../9.0.2.0/openupgrade_analysis.txt | 64 ++++++++++++++++--- .../migrations/9.0.2.0/post-migration.py | 18 ++++++ .../migrations/9.0.2.0/pre-migration.py | 15 +++++ 3 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 addons/mass_mailing/migrations/9.0.2.0/post-migration.py create mode 100644 addons/mass_mailing/migrations/9.0.2.0/pre-migration.py diff --git a/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt b/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt index 44ed6e7fc8f5..4b3d06aa8951 100644 --- a/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt +++ b/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt @@ -1,30 +1,76 @@ ---Fields in module 'mass_mailing'--- mass_mailing / link.tracker / mass_mailing_campaign_id (many2one): NEW relation: mail.mass_mailing.campaign +# Nothing to do + mass_mailing / link.tracker / mass_mailing_id (many2one) : NEW relation: mail.mass_mailing +# Nothing to do + mass_mailing / link.tracker.click / mail_stat_id (many2one) : NEW relation: mail.mail.statistics +# Nothing to do + mass_mailing / link.tracker.click / mass_mailing_campaign_id (many2one): NEW relation: mail.mass_mailing.campaign +# Nothing to do + mass_mailing / link.tracker.click / mass_mailing_id (many2one) : NEW relation: mail.mass_mailing +# Nothing to do mass_mailing / mail.mail.statistics / links_click_ids (one2many) : NEW relation: link.tracker.click -mass_mailing / mail.mass_mailing / active (boolean) : NEW -mass_mailing / mail.mass_mailing / keep_archives (boolean) : NEW -mass_mailing / mail.mass_mailing / schedule_date (datetime) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing / active (boolean) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing / keep_archives (boolean) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing / schedule_date (datetime) : NEW +# Nothing to do + mass_mailing / mail.mass_mailing / state (selection) : selection_keys is now '['done', 'draft', 'in_queue', 'sending']' ('['done', 'draft', 'test']') -mass_mailing / mail.mass_mailing.campaign / _inherits (False) : NEW +# Done ---> 'test' is converted to 'draft' + +mass_mailing / mail.mass_mailing.campaign / _inherits (False) : NEW +# Nothing to do + mass_mailing / mail.mass_mailing.campaign / campaign_id (many2one) : NEW relation: utm.campaign, required: required, req_default: function +# Nothing to do + mass_mailing / mail.mass_mailing.campaign / category_ids (many2many) : DEL relation: mail.mass_mailing.category +# Nothing to do + mass_mailing / mail.mass_mailing.campaign / medium_id (many2one) : NEW relation: utm.medium +# Nothing to do + mass_mailing / mail.mass_mailing.campaign / source_id (many2one) : NEW relation: utm.source +# Nothing to do + mass_mailing / mail.mass_mailing.campaign / tag_ids (many2many) : NEW relation: mail.mass_mailing.tag -mass_mailing / mail.mass_mailing.contact / message_bounce (integer) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.contact / message_bounce (integer) : NEW +# Nothing to do + mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): not a function anymore mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): relation is now 'mail.followers' ('res.partner') mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): type is now 'one2many' ('many2many') -mass_mailing / mail.mass_mailing.contact / unsubscription_date (datetime): NEW -mass_mailing / mail.mass_mailing.list / active (boolean) : NEW + +mass_mailing / mail.mass_mailing.contact / unsubscription_date (datetime): NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.list / active (boolean) : NEW +# Nothing to do + mass_mailing / mail.mass_mailing.list / popup_content (html) : NEW required: required, req_default: function -mass_mailing / mail.mass_mailing.list / popup_redirect_url (char) : NEW -mass_mailing / mail.mass_mailing.tag / color (integer) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.list / popup_redirect_url (char) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.tag / color (integer) : NEW +# Nothing to do + mass_mailing / mail.mass_mailing.tag / name (char) : NEW required: required +# Nothing to do + ---XML records in module 'mass_mailing'--- NEW ir.actions.act_window: mass_mailing.action_create_ab_mass_mailings_from_campaign NEW ir.actions.act_window: mass_mailing.action_create_mass_mailings_from_campaign diff --git a/addons/mass_mailing/migrations/9.0.2.0/post-migration.py b/addons/mass_mailing/migrations/9.0.2.0/post-migration.py new file mode 100644 index 000000000000..59927a7bf77e --- /dev/null +++ b/addons/mass_mailing/migrations/9.0.2.0/post-migration.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# © 2016 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + + +def map_template_state(cr): + openupgrade.map_values( + cr, + openupgrade.get_legacy_name('state'), + 'state', + [('test', 'draft')], + table='mail_mass_mailing', write='sql') + + +@openupgrade.migrate() +def migrate(cr, version): + map_template_state(cr) diff --git a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py new file mode 100644 index 000000000000..788d89aa5b8c --- /dev/null +++ b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# © 2016 Tecnativa - Vicent Cubells +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + +column_copies = { + 'mail_mass_mailing': [ + ('state', None, None), + ], +} + + +@openupgrade.migrate() +def migrate(cr, version): + openupgrade.copy_columns(cr, column_copies) From 3e8ec9eee10cabac11b384389ab69d0e5f078580 Mon Sep 17 00:00:00 2001 From: cubells Date: Thu, 24 Nov 2016 19:14:06 +0100 Subject: [PATCH 2/5] [MIG] mass_mailing module migration script * Created openupgrade_analysis_work.txt * Updated module coverage document * Adder pre and post migration fields --- openerp/openupgrade/doc/source/modules80-90.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/openupgrade/doc/source/modules80-90.rst b/openerp/openupgrade/doc/source/modules80-90.rst index d7e19dbd5e62..1bf0c92255f1 100644 --- a/openerp/openupgrade/doc/source/modules80-90.rst +++ b/openerp/openupgrade/doc/source/modules80-90.rst @@ -292,7 +292,7 @@ Status : +-----------------------------------+-----------------------------------+ |marketing_campaign_crm_demo | | +-----------------------------------+-----------------------------------+ -|mass_mailing | | +|mass_mailing | Done | +-----------------------------------+-----------------------------------+ |membership | | +-----------------------------------+-----------------------------------+ From 5789e9a2f2a3b798b273958b4dec856efe5ef9fb Mon Sep 17 00:00:00 2001 From: cubells Date: Fri, 25 Nov 2016 16:42:24 +0100 Subject: [PATCH 3/5] Renamed column and table to preserve categorys of mass_mailing campaigns --- .../9.0.2.0/openupgrade_analysis.txt | 64 ++-------- .../9.0.2.0/openupgrade_analysis_work.txt | 112 ++++++++++++++++++ .../migrations/9.0.2.0/pre-migration.py | 12 ++ 3 files changed, 133 insertions(+), 55 deletions(-) create mode 100644 addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis_work.txt diff --git a/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt b/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt index 4b3d06aa8951..44ed6e7fc8f5 100644 --- a/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt +++ b/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis.txt @@ -1,76 +1,30 @@ ---Fields in module 'mass_mailing'--- mass_mailing / link.tracker / mass_mailing_campaign_id (many2one): NEW relation: mail.mass_mailing.campaign -# Nothing to do - mass_mailing / link.tracker / mass_mailing_id (many2one) : NEW relation: mail.mass_mailing -# Nothing to do - mass_mailing / link.tracker.click / mail_stat_id (many2one) : NEW relation: mail.mail.statistics -# Nothing to do - mass_mailing / link.tracker.click / mass_mailing_campaign_id (many2one): NEW relation: mail.mass_mailing.campaign -# Nothing to do - mass_mailing / link.tracker.click / mass_mailing_id (many2one) : NEW relation: mail.mass_mailing -# Nothing to do mass_mailing / mail.mail.statistics / links_click_ids (one2many) : NEW relation: link.tracker.click -# Nothing to do - -mass_mailing / mail.mass_mailing / active (boolean) : NEW -# Nothing to do - -mass_mailing / mail.mass_mailing / keep_archives (boolean) : NEW -# Nothing to do - -mass_mailing / mail.mass_mailing / schedule_date (datetime) : NEW -# Nothing to do - +mass_mailing / mail.mass_mailing / active (boolean) : NEW +mass_mailing / mail.mass_mailing / keep_archives (boolean) : NEW +mass_mailing / mail.mass_mailing / schedule_date (datetime) : NEW mass_mailing / mail.mass_mailing / state (selection) : selection_keys is now '['done', 'draft', 'in_queue', 'sending']' ('['done', 'draft', 'test']') -# Done ---> 'test' is converted to 'draft' - -mass_mailing / mail.mass_mailing.campaign / _inherits (False) : NEW -# Nothing to do - +mass_mailing / mail.mass_mailing.campaign / _inherits (False) : NEW mass_mailing / mail.mass_mailing.campaign / campaign_id (many2one) : NEW relation: utm.campaign, required: required, req_default: function -# Nothing to do - mass_mailing / mail.mass_mailing.campaign / category_ids (many2many) : DEL relation: mail.mass_mailing.category -# Nothing to do - mass_mailing / mail.mass_mailing.campaign / medium_id (many2one) : NEW relation: utm.medium -# Nothing to do - mass_mailing / mail.mass_mailing.campaign / source_id (many2one) : NEW relation: utm.source -# Nothing to do - mass_mailing / mail.mass_mailing.campaign / tag_ids (many2many) : NEW relation: mail.mass_mailing.tag -# Nothing to do - -mass_mailing / mail.mass_mailing.contact / message_bounce (integer) : NEW -# Nothing to do - +mass_mailing / mail.mass_mailing.contact / message_bounce (integer) : NEW mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): not a function anymore mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): relation is now 'mail.followers' ('res.partner') mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): type is now 'one2many' ('many2many') - -mass_mailing / mail.mass_mailing.contact / unsubscription_date (datetime): NEW -# Nothing to do - -mass_mailing / mail.mass_mailing.list / active (boolean) : NEW -# Nothing to do - +mass_mailing / mail.mass_mailing.contact / unsubscription_date (datetime): NEW +mass_mailing / mail.mass_mailing.list / active (boolean) : NEW mass_mailing / mail.mass_mailing.list / popup_content (html) : NEW required: required, req_default: function -# Nothing to do - -mass_mailing / mail.mass_mailing.list / popup_redirect_url (char) : NEW -# Nothing to do - -mass_mailing / mail.mass_mailing.tag / color (integer) : NEW -# Nothing to do - +mass_mailing / mail.mass_mailing.list / popup_redirect_url (char) : NEW +mass_mailing / mail.mass_mailing.tag / color (integer) : NEW mass_mailing / mail.mass_mailing.tag / name (char) : NEW required: required -# Nothing to do - ---XML records in module 'mass_mailing'--- NEW ir.actions.act_window: mass_mailing.action_create_ab_mass_mailings_from_campaign NEW ir.actions.act_window: mass_mailing.action_create_mass_mailings_from_campaign diff --git a/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis_work.txt b/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis_work.txt new file mode 100644 index 000000000000..7bde550b3f73 --- /dev/null +++ b/addons/mass_mailing/migrations/9.0.2.0/openupgrade_analysis_work.txt @@ -0,0 +1,112 @@ +---Fields in module 'mass_mailing'--- +mass_mailing / link.tracker / mass_mailing_campaign_id (many2one): NEW relation: mail.mass_mailing.campaign +# Nothing to do + +mass_mailing / link.tracker / mass_mailing_id (many2one) : NEW relation: mail.mass_mailing +# Nothing to do + +mass_mailing / link.tracker.click / mail_stat_id (many2one) : NEW relation: mail.mail.statistics +# Nothing to do + +mass_mailing / link.tracker.click / mass_mailing_campaign_id (many2one): NEW relation: mail.mass_mailing.campaign +# Nothing to do + +mass_mailing / link.tracker.click / mass_mailing_id (many2one) : NEW relation: mail.mass_mailing +# Nothing to do +mass_mailing / mail.mail.statistics / links_click_ids (one2many) : NEW relation: link.tracker.click +# Nothing to do + +mass_mailing / mail.mass_mailing / active (boolean) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing / keep_archives (boolean) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing / schedule_date (datetime) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing / state (selection) : selection_keys is now '['done', 'draft', 'in_queue', 'sending']' ('['done', 'draft', 'test']') +# Done ---> 'test' is converted to 'draft' + +mass_mailing / mail.mass_mailing.campaign / _inherits (False) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.campaign / campaign_id (many2one) : NEW relation: utm.campaign, required: required, req_default: function +# Nothing to do + +mass_mailing / mail.mass_mailing.campaign / category_ids (many2many) : DEL relation: mail.mass_mailing.category +# Done: renamed column and table to preserve data + +mass_mailing / mail.mass_mailing.campaign / medium_id (many2one) : NEW relation: utm.medium +# Nothing to do + +mass_mailing / mail.mass_mailing.campaign / source_id (many2one) : NEW relation: utm.source +# Nothing to do + +mass_mailing / mail.mass_mailing.campaign / tag_ids (many2many) : NEW relation: mail.mass_mailing.tag +# Nothing to do + +mass_mailing / mail.mass_mailing.contact / message_bounce (integer) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): not a function anymore +mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): relation is now 'mail.followers' ('res.partner') +mass_mailing / mail.mass_mailing.contact / message_follower_ids (many2many): type is now 'one2many' ('many2many') + +mass_mailing / mail.mass_mailing.contact / unsubscription_date (datetime): NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.list / active (boolean) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.list / popup_content (html) : NEW required: required, req_default: function +# Nothing to do + +mass_mailing / mail.mass_mailing.list / popup_redirect_url (char) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.tag / color (integer) : NEW +# Nothing to do + +mass_mailing / mail.mass_mailing.tag / name (char) : NEW required: required +# Nothing to do + +---XML records in module 'mass_mailing'--- +NEW ir.actions.act_window: mass_mailing.action_create_ab_mass_mailings_from_campaign +NEW ir.actions.act_window: mass_mailing.action_create_mass_mailings_from_campaign +NEW ir.actions.act_window: mass_mailing.action_mass_mailing_configuration +NEW ir.actions.act_window: mass_mailing.action_view_mass_mailing_links_statistics +NEW ir.actions.act_window: mass_mailing.dropdb snipp +DEL ir.actions.act_window.view: mass_mailing.action_mail_mass_mailing_report_graph +NEW ir.actions.client: mass_mailing.action_client_mass_mailing_menu +DEL ir.actions.client: mass_mailing.action_client_marketing_menu +NEW ir.cron: mass_mailing.ir_cron_mass_mailing_queue +NEW ir.filters: mass_mailing.filter_contact_subscription +NEW ir.filters: mass_mailing.filter_contact_unsubscription +NEW ir.model.access: mass_mailing.access_mass_mailing_tag +DEL ir.model.access: mass_mailing.access_mass_mailing_category +NEW ir.ui.menu: mass_mailing.mass_mailing_configuration +NEW ir.ui.menu: mass_mailing.mass_mailing_menu +NEW ir.ui.menu: mass_mailing.mass_mailing_menu_root +NEW ir.ui.menu: mass_mailing.menu_mass_mailing_configuration +NEW ir.ui.menu: mass_mailing.menu_mass_mailing_global_settings +DEL ir.ui.menu: mass_mailing.marketing_configuration +DEL ir.ui.menu: mass_mailing.mass_mailing_campaign +DEL ir.ui.menu: mass_mailing.mass_mailing_list +NEW ir.ui.view: mass_mailing.FieldTextHtmlInline +NEW ir.ui.view: mass_mailing.FieldTextHtmlPopupContent +NEW ir.ui.view: mass_mailing.email_designer_snippets +NEW ir.ui.view: mass_mailing.mass_mail_theme_list +NEW ir.ui.view: mass_mailing.snippet_options +NEW ir.ui.view: mass_mailing.view_mail_mail_statistics_graph +NEW ir.ui.view: mass_mailing.view_mail_mass_mailing_contact_graph +NEW ir.ui.view: mass_mailing.view_mail_mass_mailing_links_search +NEW ir.ui.view: mass_mailing.view_mail_mass_mailing_links_tree +NEW ir.ui.view: mass_mailing.view_mail_statistics_report_pivot +NEW ir.ui.view: mass_mailing.view_mass_mailing_configuration +DEL ir.ui.view: mass_mailing.assets_editor +DEL ir.ui.view: mass_mailing.assets_frontend +DEL ir.ui.view: mass_mailing.mailing_list_subscribe +DEL ir.ui.view: mass_mailing.view_marketing_configuration_mass_mailing +NEW res.groups: mass_mailing.group_mass_mailing_user +NEW res.groups: mass_mailing.group_website_popup_on_exit diff --git a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py index 788d89aa5b8c..15ad29462cb8 100644 --- a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py +++ b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py @@ -9,7 +9,19 @@ ], } +column_renames = { + 'mail_mass_mailing_campaign': [ + ('category_ids', None), + ] +} + +table_renames = [ + ('mail_mass_mailing_category', None), +] + @openupgrade.migrate() def migrate(cr, version): openupgrade.copy_columns(cr, column_copies) + openupgrade.rename_tables(cr, table_renames) + openupgrade.rename_columns(cr, column_renames) From 3a262d4ff2959f9471596f8876eaba53bbb6d724 Mon Sep 17 00:00:00 2001 From: cubells Date: Fri, 25 Nov 2016 21:50:40 +0100 Subject: [PATCH 4/5] Remove incorrect rename of many2many field --- addons/mass_mailing/migrations/9.0.2.0/pre-migration.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py index 15ad29462cb8..5b4682ca7184 100644 --- a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py +++ b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py @@ -9,14 +9,9 @@ ], } -column_renames = { - 'mail_mass_mailing_campaign': [ - ('category_ids', None), - ] -} - table_renames = [ ('mail_mass_mailing_category', None), + ('mail_mass_mailing_campaign', None), ] @@ -24,4 +19,3 @@ def migrate(cr, version): openupgrade.copy_columns(cr, column_copies) openupgrade.rename_tables(cr, table_renames) - openupgrade.rename_columns(cr, column_renames) From 1c2762c64f314392622ce162ad5d84fcdb9cf1c0 Mon Sep 17 00:00:00 2001 From: cubells Date: Fri, 25 Nov 2016 22:01:12 +0100 Subject: [PATCH 5/5] Remove incorrect rename of many2many field --- addons/mass_mailing/migrations/9.0.2.0/pre-migration.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py index 5b4682ca7184..62f8b46d82f2 100644 --- a/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py +++ b/addons/mass_mailing/migrations/9.0.2.0/pre-migration.py @@ -11,7 +11,6 @@ table_renames = [ ('mail_mass_mailing_category', None), - ('mail_mass_mailing_campaign', None), ]