From f1283ac43c8915cf3976bd4d6c8c666cb9b6502b Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Wed, 5 Apr 2017 19:55:02 +0200 Subject: [PATCH 1/3] [ADD] mail --- .../10.0.1.0/openupgrade_analysis_work.txt | 6 ++-- .../migrations/10.0.1.0/post-migration.py | 28 +++++++++++++++++++ .../mail/migrations/10.0.1.0/pre-migration.py | 16 +++++++++++ .../migrations/10.0.1.0/tests/test_data.yml | 14 ++++++++++ .../migrations/10.0.1.0/tests/test_mail.py | 25 +++++++++++++++++ odoo/openupgrade/doc/source/modules90-100.rst | 4 +-- 6 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 addons/mail/migrations/10.0.1.0/post-migration.py create mode 100644 addons/mail/migrations/10.0.1.0/pre-migration.py create mode 100644 addons/mail/migrations/10.0.1.0/tests/test_data.yml create mode 100644 addons/mail/migrations/10.0.1.0/tests/test_mail.py diff --git a/addons/mail/migrations/10.0.1.0/openupgrade_analysis_work.txt b/addons/mail/migrations/10.0.1.0/openupgrade_analysis_work.txt index d736f56c4492..df7c788c2231 100644 --- a/addons/mail/migrations/10.0.1.0/openupgrade_analysis_work.txt +++ b/addons/mail/migrations/10.0.1.0/openupgrade_analysis_work.txt @@ -8,11 +8,10 @@ mail / mail.notification / email_status (selection) : NEW se mail / mail.notification / is_email (boolean) : NEW mail / mail.notification / is_read (boolean) : NEW mail / mail.notification / res_partner_id (many2one) : NEW relation: res.partner, required: required -# TODO: Migrate from table table mail_message_res_partner_needaction_rel +# set email_status, is_email, is_read in post migration mail / mail.shortcode / substitution (char) : type is now 'text' ('char') -# TODO: pre-migration. copy column -# TODO: post-migration. Move from old column converting to text +# NOTHING TO DO mail / mail.template / scheduled_date (char) : NEW # NOTHING TO DO @@ -39,6 +38,7 @@ DEL ir.actions.act_window.view: mail.action_contacts_view_form DEL ir.actions.act_window.view: mail.action_contacts_view_kanban DEL ir.actions.act_window.view: mail.action_contacts_view_tree NEW ir.config_parameter: mail.icp_mail_bounce_alias +# create an xmlid if this one already exists NEW ir.model.access: mail.access_mail_notification_portal NEW ir.model.access: mail.access_mail_notification_system NEW ir.model.access: mail.access_mail_notification_user diff --git a/addons/mail/migrations/10.0.1.0/post-migration.py b/addons/mail/migrations/10.0.1.0/post-migration.py new file mode 100644 index 000000000000..8128a6fe6391 --- /dev/null +++ b/addons/mail/migrations/10.0.1.0/post-migration.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# © 2017 Therp BV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(cr, version): + # the table exists already, so the ORM doesn't create an id column + cr.execute( + 'alter table mail_message_res_partner_needaction_rel ' + 'add column id serial not null primary key' + ) + # as 9.0 deleted notifications for read messages, all existing + # notifications are unread by definition + cr.execute( + 'update mail_message_res_partner_needaction_rel set is_read=False' + ) + # set email properties + cr.execute( + """update mail_message_res_partner_needaction_rel rel + set is_email=True, email_status=case + when m.state in ('sent', 'exception') then m.state + else 'ready' + end + from mail_mail m + where rel.mail_message_id=m.mail_message_id""" + ) diff --git a/addons/mail/migrations/10.0.1.0/pre-migration.py b/addons/mail/migrations/10.0.1.0/pre-migration.py new file mode 100644 index 000000000000..c32ac8edd443 --- /dev/null +++ b/addons/mail/migrations/10.0.1.0/pre-migration.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# © 2017 Therp BV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from openupgradelib import openupgrade + + +@openupgrade.migrate() +def migrate(cr, version): + # create an xmlid for mail.bounce.alias is it exists + cr.execute( + """insert into ir_model_data + (module, name, model, res_id) + select 'mail', 'icp_mail_bounce_alias', 'ir.config_parameter', id + from ir_config_parameter + where key='mail.bounce.alias' limit 1""" + ) diff --git a/addons/mail/migrations/10.0.1.0/tests/test_data.yml b/addons/mail/migrations/10.0.1.0/tests/test_data.yml new file mode 100644 index 000000000000..8a417fef8c08 --- /dev/null +++ b/addons/mail/migrations/10.0.1.0/tests/test_data.yml @@ -0,0 +1,14 @@ +- + Test data to test email notifications +- + !record {model: mail.mail, id: mail.test_mail_outgoing}: + state: 'outgoing' +- + !record {model: mail.mail, id: mail.test_mail_outgoing}: + needaction_partner_ids: [base.res_partner_1] +- + !record {model: mail.mail, id: mail.test_mail_exception}: + state: 'exception' +- + !record {model: mail.mail, id: mail.test_mail_exception}: + needaction_partner_ids: [base.res_partner_1] diff --git a/addons/mail/migrations/10.0.1.0/tests/test_mail.py b/addons/mail/migrations/10.0.1.0/tests/test_mail.py new file mode 100644 index 000000000000..ad3607c34240 --- /dev/null +++ b/addons/mail/migrations/10.0.1.0/tests/test_mail.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# © 2017 Therp BV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from openerp.tests.common import TransactionCase + + +class TestMail(TransactionCase): + def test_mail(self): + # check that our test mails have the correct states + notification = self.env['mail.notification'].search([ + ( + 'mail_message_id', '=', + self.env.ref('mail.test_mail_outgoing').mail_message_id.id + ), + ]) + self.assertTrue(notification.is_email) + self.assertEqual(notification.email_status, 'ready') + notification = self.env['mail.notification'].search([ + ( + 'mail_message_id', '=', + self.env.ref('mail.test_mail_exception').mail_message_id.id + ), + ]) + self.assertTrue(notification.is_email) + self.assertEqual(notification.email_status, 'exception') diff --git a/odoo/openupgrade/doc/source/modules90-100.rst b/odoo/openupgrade/doc/source/modules90-100.rst index f96d837b95ad..88984b0cb409 100644 --- a/odoo/openupgrade/doc/source/modules90-100.rst +++ b/odoo/openupgrade/doc/source/modules90-100.rst @@ -297,7 +297,7 @@ Status : +-----------------------------------+-----------------------------------+ |lunch | | +-----------------------------------+-----------------------------------+ -|mail | | +|mail | Done | +-----------------------------------+-----------------------------------+ |mail_tip | | +-----------------------------------+-----------------------------------+ @@ -453,7 +453,7 @@ Status : +-----------------------------------+-----------------------------------+ |warning | | +-----------------------------------+-----------------------------------+ -|web | | +|web | Nothing to do | +-----------------------------------+-----------------------------------+ |web_analytics | | +-----------------------------------+-----------------------------------+ From 1d0a4f4007e14b5c53ca7cefda8375286d5ca8fd Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Thu, 13 Apr 2017 17:04:07 +0200 Subject: [PATCH 2/3] [ADD] Load changes in nopudate data --- addons/mail/migrations/10.0.1.0/noupdate_changes.xml | 6 ++++++ addons/mail/migrations/10.0.1.0/post-migration.py | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 addons/mail/migrations/10.0.1.0/noupdate_changes.xml diff --git a/addons/mail/migrations/10.0.1.0/noupdate_changes.xml b/addons/mail/migrations/10.0.1.0/noupdate_changes.xml new file mode 100644 index 000000000000..9912e10cd2f2 --- /dev/null +++ b/addons/mail/migrations/10.0.1.0/noupdate_changes.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/addons/mail/migrations/10.0.1.0/post-migration.py b/addons/mail/migrations/10.0.1.0/post-migration.py index 8128a6fe6391..b7e5062d4d52 100644 --- a/addons/mail/migrations/10.0.1.0/post-migration.py +++ b/addons/mail/migrations/10.0.1.0/post-migration.py @@ -26,3 +26,5 @@ def migrate(cr, version): from mail_mail m where rel.mail_message_id=m.mail_message_id""" ) + openupgrade.load_data( + env.cr, 'mail', 'migrations/10.0.1.0/noupdate_changes.xml') From 508897131c79aa467a88069281949c8c55dd146b Mon Sep 17 00:00:00 2001 From: Stefan Rijnhart Date: Thu, 13 Apr 2017 20:33:00 +0200 Subject: [PATCH 3/3] [FIX] No env --- addons/mail/migrations/10.0.1.0/post-migration.py | 4 ++-- addons/mail/migrations/10.0.1.0/pre-migration.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/mail/migrations/10.0.1.0/post-migration.py b/addons/mail/migrations/10.0.1.0/post-migration.py index b7e5062d4d52..8b259518eacb 100644 --- a/addons/mail/migrations/10.0.1.0/post-migration.py +++ b/addons/mail/migrations/10.0.1.0/post-migration.py @@ -4,7 +4,7 @@ from openupgradelib import openupgrade -@openupgrade.migrate() +@openupgrade.migrate(use_env=False) def migrate(cr, version): # the table exists already, so the ORM doesn't create an id column cr.execute( @@ -27,4 +27,4 @@ def migrate(cr, version): where rel.mail_message_id=m.mail_message_id""" ) openupgrade.load_data( - env.cr, 'mail', 'migrations/10.0.1.0/noupdate_changes.xml') + cr, 'mail', 'migrations/10.0.1.0/noupdate_changes.xml') diff --git a/addons/mail/migrations/10.0.1.0/pre-migration.py b/addons/mail/migrations/10.0.1.0/pre-migration.py index c32ac8edd443..84c5bea245df 100644 --- a/addons/mail/migrations/10.0.1.0/pre-migration.py +++ b/addons/mail/migrations/10.0.1.0/pre-migration.py @@ -4,7 +4,7 @@ from openupgradelib import openupgrade -@openupgrade.migrate() +@openupgrade.migrate(use_env=False) def migrate(cr, version): # create an xmlid for mail.bounce.alias is it exists cr.execute(