diff --git a/addons/website_event_online/__manifest__.py b/addons/website_event_online/__manifest__.py index 46ad6a7d2b2..e5f8ce7c482 100644 --- a/addons/website_event_online/__manifest__.py +++ b/addons/website_event_online/__manifest__.py @@ -18,9 +18,11 @@ 'views/event_event_views.xml', 'views/event_registration_views.xml', 'views/website_visitor_views.xml', + 'views/event_templates_event.xml', ], 'demo': [ 'data/website_visitor_demo.xml', + 'data/event_demo.xml', 'data/event_registration_demo.xml', ], 'application': False, diff --git a/addons/website_event_online/data/event_demo.xml b/addons/website_event_online/data/event_demo.xml new file mode 100644 index 00000000000..ff2bde98b40 --- /dev/null +++ b/addons/website_event_online/data/event_demo.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/addons/website_event_online/models/event_event.py b/addons/website_event_online/models/event_event.py index 9c7d1680f77..1419d63f786 100644 --- a/addons/website_event_online/models/event_event.py +++ b/addons/website_event_online/models/event_event.py @@ -1,14 +1,65 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo import models, _ +from odoo import api, fields, models, _ from odoo.addons.http_routing.models.ir_http import slug +from odoo.osv import expression class Event(models.Model): _name = 'event.event' _inherit = 'event.event' + # frontend options + menu_register_cta = fields.Boolean( + 'Add Register Button', compute='_compute_menu_register_cta', + readonly=False, store=True) + + @api.depends('website_menu') + def _compute_menu_register_cta(self): + for event in self: + event.menu_register_cta = event.website_menu + + def _compute_is_participating(self): + """ Override is_participating to improve heuristic that is now + + * public, no visitor: not participating as we have no information; + * public and visitor: check visitor is linked to a registration. As + visitors are merged on the top parent, current visitor check is + sufficient even for successive visits; + * logged, no visitor: check partner is linked to a registration. Do + not check the email as it is not really secure; + * logged as visitor: check partner or visitor are linked to a + registration; + """ + current_visitor = self.env['website.visitor']._get_visitor_from_request(force_create=False) + if self.env.user._is_public() and not current_visitor: + events = self.env['event.event'] + elif self.env.user._is_public(): + events = self.env['event.registration'].sudo().search([ + ('event_id', 'in', self.ids), + ('visitor_id', '=', current_visitor.id), + ]).event_id + else: + if current_visitor: + domain = [ + '|', + ('partner_id', '=', self.env.user.partner_id.id), + ('visitor_id', '=', current_visitor.id) + ] + else: + domain = [('partner_id', '=', self.env.user.partner_id.id)] + events = self.env['event.registration'].sudo().search( + expression.AND([ + domain, + [('event_id', 'in', self.ids)] + ]) + ).event_id + + + for event in self: + event.is_participating = event in events + # ------------------------------------------------------------ # WEBSITE MENU MANAGEMENT # ------------------------------------------------------------ diff --git a/addons/website_event_online/views/event_event_views.xml b/addons/website_event_online/views/event_event_views.xml index e968ea1e903..6d45652b57c 100644 --- a/addons/website_event_online/views/event_event_views.xml +++ b/addons/website_event_online/views/event_event_views.xml @@ -10,6 +10,8 @@
diff --git a/addons/website_event_online/views/event_templates_event.xml b/addons/website_event_online/views/event_templates_event.xml new file mode 100644 index 00000000000..b7c71afd11e --- /dev/null +++ b/addons/website_event_online/views/event_templates_event.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/addons/website_event_track_online/__manifest__.py b/addons/website_event_track_online/__manifest__.py index 9148c7169a3..e0547b8c030 100644 --- a/addons/website_event_track_online/__manifest__.py +++ b/addons/website_event_track_online/__manifest__.py @@ -19,8 +19,9 @@ 'security/ir.model.access.csv', 'views/assets.xml', 'views/event_event_views.xml', - 'views/event_track_templates_reminder.xml', + 'views/event_templates_registration.xml', 'views/event_track_templates.xml', + 'views/event_track_templates_reminder.xml', 'views/event_track_views.xml', 'views/event_track_visitor_views.xml', 'views/website_visitor_views.xml', diff --git a/addons/website_event_track_online/views/event_templates_registration.xml b/addons/website_event_track_online/views/event_templates_registration.xml new file mode 100644 index 00000000000..0918ce2572c --- /dev/null +++ b/addons/website_event_track_online/views/event_templates_registration.xml @@ -0,0 +1,18 @@ + + + + + + +