diff --git a/addons/event/__manifest__.py b/addons/event/__manifest__.py index 3dc6be1a116..bd221a9962d 100644 --- a/addons/event/__manifest__.py +++ b/addons/event/__manifest__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- { 'name': 'Events Organization', - 'version': '1.4', + 'version': '1.5', 'website': 'https://www.odoo.com/page/events', 'category': 'Marketing/Events', 'summary': 'Trainings, Conferences, Meetings, Exhibitions, Registrations', @@ -44,4 +44,7 @@ Key Features ], 'installable': True, 'auto_install': False, + 'qweb': [ + 'static/src/xml/field_icon_selection.xml', + ], } diff --git a/addons/event/models/event_mail.py b/addons/event/models/event_mail.py index 11ff8fbff64..57ac14ff55b 100644 --- a/addons/event/models/event_mail.py +++ b/addons/event/models/event_mail.py @@ -86,6 +86,10 @@ class EventMailScheduler(models.Model): mail_registration_ids = fields.One2many('event.mail.registration', 'scheduler_id') mail_sent = fields.Boolean('Mail Sent on Event', copy=False) done = fields.Boolean('Sent', compute='_compute_done', store=True, copy=False) + mail_state = fields.Selection( + [('running', 'Running'), ('scheduled', 'Scheduled'), ('sent', 'Sent')], + string='Global communication Status', compute='_compute_mail_state') + mail_count_done = fields.Integer('# Sent', copy=False, readonly=True) @api.depends('mail_sent', 'interval_type', 'event_id.registration_ids', 'mail_registration_ids.mail_sent') def _compute_done(self): @@ -107,6 +111,20 @@ class EventMailScheduler(models.Model): scheduler.scheduled_date = date + _INTERVALS[scheduler.interval_unit](sign * scheduler.interval_nbr) if date else False + @api.depends('interval_type', 'scheduled_date', 'event_mail_sent') + def _compute_mail_state(self): + for scheduler in self: + # registrations based + if scheduler.interval_type == 'after_sub': + scheduler.mail_state = 'running' + # global event based + elif scheduler.event_mail_sent: + scheduler.mail_state = 'sent' + elif scheduler.scheduled_date: + scheduler.mail_state = 'scheduled' + else: + scheduler.mail_state = 'running' + def execute(self): for mail in self: now = fields.Datetime.now() @@ -120,12 +138,15 @@ class EventMailScheduler(models.Model): mail.write({'mail_registration_ids': lines}) # execute scheduler on registrations mail.mail_registration_ids.execute() + mail.mail_count_done = len(mail.mail_registration_ids.filtered(lambda reg: reg.mail_sent)) else: # Do not send emails if the mailing was scheduled before the event but the event is over if not mail.mail_sent and mail.scheduled_date <= now and mail.notification_type == 'mail' and \ (mail.interval_type != 'before_event' or mail.event_id.date_end > now): mail.event_id.mail_attendees(mail.template_id.id) mail.write({'mail_sent': True}) + mail.mail_count_done = len(mail.event_id.registration_ids.filtered(lambda reg: reg.state != 'cancel')) + return True @api.model diff --git a/addons/event/static/src/js/field_icon_selection.js b/addons/event/static/src/js/field_icon_selection.js new file mode 100644 index 00000000000..95740ea62d9 --- /dev/null +++ b/addons/event/static/src/js/field_icon_selection.js @@ -0,0 +1,29 @@ +odoo.define('event.field_icon_selection', function (require) { +"use strict"; + +var core = require('web.core'); +var registry = require('web.field_registry'); +var AbstractField = require('web.AbstractField'); +var QWeb = core.qweb; + +var IconSelection = AbstractField.extend({ + supportedFieldTypes: ['char', 'text', 'selection'], + + /** + * @override + * @private + */ + _render: function () { + this._super.apply(this, arguments); + this.icon = this.nodeOptions[this.value]; + this.title = this.value.charAt(0).toUpperCase() + this.value.slice(1); + this.$el.empty().append(QWeb.render('event.IconSelection', {'widget': this})); + }, + +}); + +registry.add('icon_selection', IconSelection); + +return IconSelection; + +}); diff --git a/addons/event/static/src/xml/field_icon_selection.xml b/addons/event/static/src/xml/field_icon_selection.xml new file mode 100644 index 00000000000..399be360311 --- /dev/null +++ b/addons/event/static/src/xml/field_icon_selection.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/addons/event/views/event_templates.xml b/addons/event/views/event_templates.xml index c8e320e5515..54cbdb0b684 100644 --- a/addons/event/views/event_templates.xml +++ b/addons/event/views/event_templates.xml @@ -4,6 +4,7 @@ diff --git a/addons/event/views/event_views.xml b/addons/event/views/event_views.xml index da2acc446e6..eaa9c2bba50 100644 --- a/addons/event/views/event_views.xml +++ b/addons/event/views/event_views.xml @@ -266,7 +266,10 @@ - + + + @@ -750,7 +753,7 @@ - +