From 22115d6d3b1cb1b8bf799243af2b5da3ca96f7a1 Mon Sep 17 00:00:00 2001 From: nda Date: Fri, 24 Nov 2023 18:19:07 +0000 Subject: [PATCH] [FIX] website_event: use correct subtype when (un)publishing is_published has been renamed in website_published in e3d2b01 but not in _track_subtype(). steps to reproduce: - add a follower to an event, select the two event subtypes on this follower - check this event on the website and publish/unpublish it - check chatter, tracking values have been created - no message have been sent before this commit: - subtypes mt_event_published and mt_event_unpublished are not used after this commit: - a message is sent when an event is (un)published opw-3582596 closes odoo/odoo#144912 X-original-commit: 1b94aca1bd00d136e05f2fd2cbbd4691940eea19 Signed-off-by: Thibault Delavallee (tde) Signed-off-by: Nicolas Danhier (nda) --- addons/website_event/models/event_event.py | 8 ++--- addons/website_event/tests/__init__.py | 1 + addons/website_event/tests/test_event_mail.py | 36 +++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 addons/website_event/tests/test_event_mail.py diff --git a/addons/website_event/models/event_event.py b/addons/website_event/models/event_event.py index 77b66edee2a..0a57aec8065 100644 --- a/addons/website_event/models/event_event.py +++ b/addons/website_event/models/event_event.py @@ -454,10 +454,10 @@ class Event(models.Model): def _track_subtype(self, init_values): self.ensure_one() - if 'is_published' in init_values and self.is_published: - return self.env.ref('website_event.mt_event_published') - elif 'is_published' in init_values and not self.is_published: - return self.env.ref('website_event.mt_event_unpublished') + if init_values.keys() & {'is_published', 'website_published'}: + if self.is_published: + return self.env.ref('website_event.mt_event_published', raise_if_not_found=False) + return self.env.ref('website_event.mt_event_unpublished', raise_if_not_found=False) return super(Event, self)._track_subtype(init_values) def _get_event_resource_urls(self): diff --git a/addons/website_event/tests/__init__.py b/addons/website_event/tests/__init__.py index 84a718ac464..25edc069f27 100644 --- a/addons/website_event/tests/__init__.py +++ b/addons/website_event/tests/__init__.py @@ -2,6 +2,7 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import test_event_internals +from . import test_event_mail from . import test_event_menus from . import test_event_visitor from . import test_website_event diff --git a/addons/website_event/tests/test_event_mail.py b/addons/website_event/tests/test_event_mail.py new file mode 100644 index 00000000000..d02a6f7c49f --- /dev/null +++ b/addons/website_event/tests/test_event_mail.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from datetime import datetime, timedelta + +from odoo.addons.mail.tests.common import MailCommon +from odoo.tests import tagged + +@tagged('post_install', '-at_install') +class TestMail(MailCommon): + + def test_website_publish_notification(self): + """ Test that the published/unpublished notifications are sent when publishing/unpublishing an event""" + published_subtype = self.env.ref('website_event.mt_event_published') + unpublished_subtype = self.env.ref('website_event.mt_event_unpublished') + event = self.env['event.event'].create({ + 'name': 'Event', + 'date_begin': datetime.today() - timedelta(days=1), + 'date_end': datetime.today() + timedelta(days=1), + }) + self.flush_tracking() + + follower = self.user_employee.partner_id + event.message_subscribe(partner_ids=follower.ids, subtype_ids=[published_subtype.id, unpublished_subtype.id]) + + event.website_published = True + self.flush_tracking() + + event.website_published = False + self.flush_tracking() + + unpublished_message, published_message, creation_message = event.message_ids + + self.assertEqual(unpublished_message.subtype_id, unpublished_subtype) + self.assertEqual(published_message.subtype_id, published_subtype) + self.assertEqual(creation_message.subtype_id, self.env.ref('mail.mt_note'))