diff --git a/addons/event/models/event_event.py b/addons/event/models/event_event.py index 1ad89563585..0a6a7f79dc6 100644 --- a/addons/event/models/event_event.py +++ b/addons/event/models/event_event.py @@ -24,6 +24,29 @@ class EventType(models.Model): _description = 'Event Template' _order = 'sequence, id' + def _default_event_mail_type_ids(self): + return [(0, 0, + {'notification_type': 'mail', + 'interval_nbr': 0, + 'interval_unit': 'now', + 'interval_type': 'after_sub', + 'template_ref': 'mail.template, %i' % self.env.ref('event.event_subscription').id, + }), + (0, 0, + {'notification_type': 'mail', + 'interval_nbr': 1, + 'interval_unit': 'hours', + 'interval_type': 'before_event', + 'template_ref': 'mail.template, %i' % self.env.ref('event.event_reminder').id, + }), + (0, 0, + {'notification_type': 'mail', + 'interval_nbr': 3, + 'interval_unit': 'days', + 'interval_type': 'before_event', + 'template_ref': 'mail.template, %i' % self.env.ref('event.event_reminder').id, + })] + name = fields.Char('Event Template', required=True, translate=True) note = fields.Html(string='Note') sequence = fields.Integer() @@ -43,7 +66,9 @@ class EventType(models.Model): default_timezone = fields.Selection( _tz_get, string='Timezone', default=lambda self: self.env.user.tz or 'UTC') # communication - event_type_mail_ids = fields.One2many('event.type.mail', 'event_type_id', string='Mail Schedule') + event_type_mail_ids = fields.One2many( + 'event.type.mail', 'event_type_id', string='Mail Schedule', + default=_default_event_mail_type_ids) # ticket reports ticket_instructions = fields.Html('Ticket Instructions', translate=True, help="This information will be printed on your tickets.") @@ -69,6 +94,9 @@ class EventEvent(models.Model): def _default_description(self): return self.env['ir.ui.view']._render_template('event.event_default_descripton') + def _default_event_mail_ids(self): + return self.env['event.type']._default_event_mail_type_ids() + name = fields.Char(string='Event', translate=True, required=True) note = fields.Html(string='Note', store=True, compute="_compute_note", readonly=False) description = fields.Html(string='Description', translate=html_translate, sanitize_attributes=False, sanitize_form=False, default=_default_description) @@ -371,7 +399,7 @@ class EventEvent(models.Model): """ for event in self: if not event.event_type_id and not event.event_mail_ids: - event.event_mail_ids = False + event.event_mail_ids = self._default_event_mail_ids() continue # lines to keep: those with already sent emails or registrations diff --git a/addons/event/tests/test_event_internals.py b/addons/event/tests/test_event_internals.py index 17dd347a97b..9fb11beff6d 100644 --- a/addons/event/tests/test_event_internals.py +++ b/addons/event/tests/test_event_internals.py @@ -86,6 +86,7 @@ class TestEventData(TestEventCommon): 'name': 'Event Update Type', 'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)), 'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)), + 'event_mail_ids': False, }) self.assertEqual(event.date_tz, self.env.user.tz) self.assertFalse(event.seats_limited) @@ -148,13 +149,12 @@ class TestEventData(TestEventCommon): # setup test records event_type_default = self.env['event.type'].create({ 'name': 'Type Default', - 'auto_confirm': True + 'auto_confirm': True, + 'event_type_mail_ids': False, }) event_type_mails = self.env['event.type'].create({ 'name': 'Type Mails', - 'auto_confirm': False - }) - event_type_mails.write({ + 'auto_confirm': False, 'event_type_mail_ids': [ Command.clear(), Command.create({ @@ -164,7 +164,7 @@ class TestEventData(TestEventCommon): 'interval_type': 'after_event', 'template_ref': 'mail.template,%i' % self.env['ir.model.data']._xmlid_to_res_id('event.event_reminder'), }) - ] + ], }) event = self.env['event.event'].create({ 'name': 'Event', @@ -307,6 +307,36 @@ class TestEventData(TestEventCommon): set(['Registration Ticket']) ) + @users('user_eventmanager') + def test_event_mail_default_config(self): + event = self.env['event.event'].create({ + 'name': 'Event Update Type', + 'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)), + 'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)), + }) + self.assertEqual(event.date_tz, self.env.user.tz) + self.assertFalse(event.seats_limited) + self.assertFalse(event.auto_confirm) + + #Event Communications: when no event type, default configuration + self.assertEqual(len(event.event_mail_ids), 3) + self.assertEqual(event.event_mail_ids[0].interval_unit, 'now') + self.assertEqual(event.event_mail_ids[0].interval_type, 'after_sub') + self.assertEqual(event.event_mail_ids[0].template_ref, self.env.ref('event.event_subscription')) + self.assertEqual(event.event_mail_ids[1].interval_nbr, 1) + self.assertEqual(event.event_mail_ids[1].interval_unit, 'hours') + self.assertEqual(event.event_mail_ids[1].interval_type, 'before_event') + self.assertEqual(event.event_mail_ids[1].template_ref, self.env.ref('event.event_reminder')) + self.assertEqual(event.event_mail_ids[2].interval_nbr, 3) + self.assertEqual(event.event_mail_ids[2].interval_unit, 'days') + self.assertEqual(event.event_mail_ids[2].interval_type, 'before_event') + self.assertEqual(event.event_mail_ids[2].template_ref, self.env.ref('event.event_reminder')) + + event.write({ + 'event_mail_ids': False + }) + self.assertEqual(event.event_mail_ids, self.env['event.mail']) + def test_event_mail_filter_template_on_event(self): """Test that the mail template are filtered to show only those which are related to the event registration model. diff --git a/addons/event_sms/tests/test_sms_schedule.py b/addons/event_sms/tests/test_sms_schedule.py index b9ecbeeb6c2..d9ac4cd7a15 100644 --- a/addons/event_sms/tests/test_sms_schedule.py +++ b/addons/event_sms/tests/test_sms_schedule.py @@ -29,6 +29,7 @@ class TestSMSSchedule(TestEventCommon, SMSCase): cls.event_0.write({ 'event_mail_ids': [ + (5, 0), (0, 0, { # right at subscription 'interval_unit': 'now', 'interval_type': 'after_sub',