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 @@
+
+
+
+
+
+
+
+ Register
+
+
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+