[IMP] event: add default communication on events
Communication on events is considered as standard: receive a confirmation
at subscribe and receive reminders. We therefore set default event mail
on both template and event models
* event.type has default communication with 3 emails;
* event.event has default communication when no event type is chosen. When
a template (event.type) is chosen its configuration is more important;
Task-2488019
PR odoo/odoo#68901
This commit is contained in:
committed by
Thibault Delavallée
parent
344f180ebb
commit
b18efd703c
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user