diff --git a/addons/event/views/event_event_views.xml b/addons/event/views/event_event_views.xml index dbf91511da6..84a250aef8d 100644 --- a/addons/event/views/event_event_views.xml +++ b/addons/event/views/event_event_views.xml @@ -212,24 +212,15 @@
-
- - +
+ + +
+
+ + Attendees
-
- - Attendees - - - -
diff --git a/addons/event_sale/views/event_registration_views.xml b/addons/event_sale/views/event_registration_views.xml index a2dd5a21633..ba6350860af 100644 --- a/addons/event_sale/views/event_registration_views.xml +++ b/addons/event_sale/views/event_registration_views.xml @@ -8,7 +8,11 @@ - + + + @@ -31,6 +35,17 @@ + + event.registration.graph.inherit.event.sale + event.registration + + + + + + + + event.registration.form.inherit event.registration @@ -49,7 +64,10 @@ - + + diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 70f58f17930..64e23e70828 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -185,6 +185,7 @@ class WebsiteEventController(http.Controller): 'range': range, 'google_url': lazy(lambda: urls.get('google_url')), 'iCal_url': lazy(lambda: urls.get('iCal_url')), + 'registration_error_code': post.get('registration_error_code'), } def _process_tickets_form(self, event, form_details): @@ -240,7 +241,7 @@ class WebsiteEventController(http.Controller): visitor = request.env['website.visitor']._get_visitor_from_request() if visitor.email: default_first_attendee = { - "name": visitor.name, + "name": visitor.display_name, "email": visitor.email, "phone": visitor.mobile, } @@ -352,8 +353,16 @@ class WebsiteEventController(http.Controller): @http.route(['''/event//registration/confirm'''], type='http', auth="public", methods=['POST'], website=True) def registration_confirm(self, event, **post): - registrations = self._process_attendees_form(event, post) - attendees_sudo = self._create_attendees_from_registration_post(event, registrations) + """ Check before creating and finalize the creation of the registrations + that we have enough seats for all selected tickets. + If we don't, the user is instead redirected to page to register with a + formatted error message. """ + registrations_data = self._process_attendees_form(event, post) + event_ticket_ids = {registration['event_ticket_id'] for registration in registrations_data} + event_tickets = request.env['event.event.ticket'].browse(event_ticket_ids) + if any(event_ticket.seats_limited and event_ticket.seats_available < len(registrations_data) for event_ticket in event_tickets): + return request.redirect('/event/%s/register?registration_error_code=insufficient_seats' % event.id) + attendees_sudo = self._create_attendees_from_registration_post(event, registrations_data) return request.redirect(('/event/%s/registration/success?' % event.id) + werkzeug.urls.url_encode({'registration_ids': ",".join([str(id) for id in attendees_sudo.ids])})) diff --git a/addons/website_event/views/event_templates_page_registration.xml b/addons/website_event/views/event_templates_page_registration.xml index fb95f566cf6..1294cff84c5 100644 --- a/addons/website_event/views/event_templates_page_registration.xml +++ b/addons/website_event/views/event_templates_page_registration.xml @@ -148,6 +148,11 @@ itemscope="itemscope" itemprop="offers" itemtype="http://schema.org/AggregateOffer">
+ diff --git a/addons/website_event_sale/controllers/main.py b/addons/website_event_sale/controllers/main.py index 818e8751e08..fcfd87730c5 100644 --- a/addons/website_event_sale/controllers/main.py +++ b/addons/website_event_sale/controllers/main.py @@ -2,7 +2,6 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from collections import defaultdict -from odoo import _ from odoo.http import request, route from odoo.addons.website_event.controllers.main import WebsiteEventController diff --git a/addons/website_event_sale/views/website_sale_templates.xml b/addons/website_event_sale/views/website_sale_templates.xml index d27c37c4cc2..ef120adc0a8 100644 --- a/addons/website_event_sale/views/website_sale_templates.xml +++ b/addons/website_event_sale/views/website_sale_templates.xml @@ -61,7 +61,7 @@
- + Registered