From 9f7d7c680930207c7989df8d8ae07731b523907a Mon Sep 17 00:00:00 2001 From: Jigar Patel Date: Wed, 22 Jun 2016 16:08:26 +0530 Subject: [PATCH] [IMP] event: improve emails sent by event * improve layout of confirmation and reminder emails * add default mails configuration on events: 2 reminders are added J-2 and J_15 --- addons/event/data/email_template_data.xml | 255 ++++++++++++++++++++-- addons/event/models/event.py | 31 +++ addons/event/tests/common.py | 7 +- addons/event/tests/test_event_flow.py | 3 + addons/website_event/models/event.py | 1 - 5 files changed, 279 insertions(+), 18 deletions(-) diff --git a/addons/event/data/email_template_data.xml b/addons/event/data/email_template_data.xml index 8e33d116881..aa49de0995c 100644 --- a/addons/event/data/email_template_data.xml +++ b/addons/event/data/email_template_data.xml @@ -29,11 +29,123 @@ ${object.event_id.reply_to|safe} Your registration at ${object.event_id.name} Dear ${object.name},

-

Thank you for your inquiry.

-

We confirm your registration to the event ${object.event_id.name}. You will receive emails with practical information.

-

If you have any questions, please let us know.

-

Best regards,

]]>
+% set date_begin = format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%SZ') +% set date_end = format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%SZ') +
+ + + + + + + +
+ + ${object.company_id.name} + + + % if 'website_url' in object.event_id and object.event_id.website_url: + More Events + % endif +
+ + + + + + + + + +
+

+ Hi ${object.name}, here is your order confirmation for + % if 'website_url' in object.event_id and object.event_id.website_url: + ${object.event_id.name} + % else: + ${object.event_id.name} + % endif +

+
+ + + + + + + +
+ + + % if object.event_id.address_id.street: +

${object.event_id.address_id.street},

+ % set location = object.event_id.address_id.street + % endif + % if object.event_id.address_id.street2: +

${object.event_id.address_id.street2},

+ % set location = '%s, %s' % (location, object.event_id.address_id.street2) + % endif + % if object.event_id.address_id.city: + ${object.event_id.address_id.city}, + % set location = '%s, %s' % (location, object.event_id.address_id.city) + % endif + % if object.event_id.address_id.state_id.name: + ${object.event_id.address_id.state_id.name}, + % set location = '%s, %s' % (location, object.event_id.address_id.state_id.name) + % endif + % if object.event_id.address_id.zip: + ${object.event_id.address_id.zip}, + % set location = '%s, %s' % (location, object.event_id.address_id.zip) + % endif + % if object.event_id.address_id.country_id.name: +

${object.event_id.address_id.country_id.name}

+ % set location = '%s, %s' % (location, object.event_id.address_id.country_id.name) + % endif +
+ + +
From ${object.event_id.date_begin_located}
+
To ${object.event_id.date_end_located}
+
TZ ${object.event_id.date_tz}
+
+ % if object.event_id.organizer_id.email: + + + + +
+

Questions about this event?

+
Please contact the organizer at ${object.event_id.organizer_id.email}
+
+ % endif + + + + +
+ Add this event to your calendar + Google + Outlook + Yahoo +
+
+
+ + + +
+ + + + + + +
+
This email was sent to ${object.email}
+

Copyright © ${object.company_id.name}

+
+
+ ]]> @@ -43,17 +155,130 @@ ${object.partner_id.email or object.email|safe} ${object.partner_id.lang} ${object.event_id.reply_to|safe} - Reminder of event ${object.event_id.name} + Reminder for ${object.event_id.name} Dear ${object.name},

-

Thank you for your registration to the event ${object.event_id.name}.

-

The event will take place at ${object.event_id.address_id.city} -% if object.event_id.address_id.street -, ${object.event_id.address_id.street} -% endif -from ${object.event_id.date_begin_located} to ${object.event_id.date_end_located}.

-

If you have any questions, please let us know.

-

Best regards,

]]>
+% set date_begin = format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%SZ') +% set date_end = format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%SZ') +
+ + + + + + + +
+ + ${object.company_id.name} + + + % if 'website_url' in object.event_id and object.event_id.website_url: + More Events + % endif +
+ + + + + + + + + +
+

+ Hi ${object.name}, +

+

+ Please keep in mind that the event + % if 'website_url' in object.event_id and object.event_id.website_url: + ${object.event_id.name} + % else: + ${object.event_id.name} + % endif + takes place on + ${object.get_date_range_str()} +

+
+ + + + + + + +
+ + + % if object.event_id.address_id.street: +

${object.event_id.address_id.street},

+ % set location = object.event_id.address_id.street + % endif + % if object.event_id.address_id.street2: +

${object.event_id.address_id.street2},

+ % set location = '%s, %s' % (location, object.event_id.address_id.street2) + % endif + % if object.event_id.address_id.city: + ${object.event_id.address_id.city}, + % set location = '%s, %s' % (location, object.event_id.address_id.city) + % endif + % if object.event_id.address_id.state_id.name: + ${object.event_id.address_id.state_id.name}, + % set location = '%s, %s' % (location, object.event_id.address_id.state_id.name) + % endif + % if object.event_id.address_id.zip: + ${object.event_id.address_id.zip}, + % set location = '%s, %s' % (location, object.event_id.address_id.zip) + % endif + % if object.event_id.address_id.country_id.name: +

${object.event_id.address_id.country_id.name}

+ % set location = '%s, %s' % (location, object.event_id.address_id.country_id.name) + % endif +
+ + +
From ${object.event_id.date_begin_located}
+
To ${object.event_id.date_end_located}
+
TZ ${object.event_id.date_tz}
+
+ % if object.event_id.organizer_id.email: + + + + +
+

Questions about this event?

+
Please contact the organizer at ${object.event_id.organizer_id.email}
+
+ % endif + + + + +
+ Add this event to your calendar + Google + Outlook + Yahoo +
+
+
+ + + +
+ + + + + + +
+
This email was sent to ${object.email}
+

Copyright © ${object.company_id.name}

+
+
+ ]]>
diff --git a/addons/event/models/event.py b/addons/event/models/event.py index c87c2947bef..707866af345 100644 --- a/addons/event/models/event.py +++ b/addons/event/models/event.py @@ -3,6 +3,7 @@ import pytz from odoo import _, api, fields, models +from odoo.addons.mail.models.mail_template import format_tz from odoo.exceptions import AccessError, UserError, ValidationError from odoo.tools.translate import html_translate @@ -57,6 +58,16 @@ class EventEvent(models.Model): 'interval_unit': 'now', 'interval_type': 'after_sub', 'template_id': self.env.ref('event.event_subscription') + }), (0, 0, { + 'interval_nbr': 2, + 'interval_unit': 'days', + 'interval_type': 'before_event', + 'template_id': self.env.ref('event.event_reminder') + }), (0, 0, { + 'interval_nbr': 15, + 'interval_unit': 'days', + 'interval_type': 'before_event', + 'template_id': self.env.ref('event.event_reminder') })] # Seats and computation @@ -410,3 +421,23 @@ class EventRegistration(models.Model): 'target': 'new', 'context': ctx, } + + @api.multi + def get_date_range_str(self): + self.ensure_one() + today = fields.Datetime.from_string(fields.Datetime.now()) + event_date = fields.Datetime.from_string(self.event_begin_date) + + if today.month == event_date.month: + if event_date.day == today.day: + return _('Today') + elif event_date.day - today.day == 1: + return _('Tomorrow') + elif event_date.isocalendar()[1] == today.isocalendar()[1]: + return _('This week') + else: + return _('This month') + elif event_date.month - today.month == 1: + return _('Next month') + else: + return format_tz(self.event_begin_date, tz='UTC', format='%Y%m%dT%H%M%SZ') diff --git a/addons/event/tests/common.py b/addons/event/tests/common.py index 15ad898e565..6e2f0406357 100644 --- a/addons/event/tests/common.py +++ b/addons/event/tests/common.py @@ -46,6 +46,9 @@ class TestEventCommon(common.TransactionCase): self.event_0 = self.env['event.event'].create({ 'name': 'TestEvent', - 'date_begin': fields.Datetime.to_string(datetime.today() - timedelta(days=5)), - 'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=5)), + 'date_begin': fields.Datetime.to_string(datetime.today() + timedelta(days=1)), + 'date_end': fields.Datetime.to_string(datetime.today() + timedelta(days=15)), + 'registration_ids': [(0, 0, { + 'partner_id': self.user_eventuser.partner_id.id, + })] }) diff --git a/addons/event/tests/test_event_flow.py b/addons/event/tests/test_event_flow.py index c35d03088df..90a4a99f20b 100644 --- a/addons/event/tests/test_event_flow.py +++ b/addons/event/tests/test_event_flow.py @@ -115,3 +115,6 @@ class TestEventFlow(TestEventCommon): 'auto_confirmation': 1 }) event_config.execute() + + def test_event_data(self): + self.assertEqual(self.event_0.registration_ids.get_date_range_str(), u'Tomorrow') diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py index 82cc834f1eb..1fdc7bb8ff6 100644 --- a/addons/website_event/models/event.py +++ b/addons/website_event/models/event.py @@ -7,7 +7,6 @@ from odoo.addons.website.models.website import slug class Event(models.Model): - _name = 'event.event' _inherit = ['event.event', 'website.seo.metadata', 'website.published.mixin']