diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 48b6b19936c..f0c5351801f 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -332,15 +332,14 @@ class WebsiteEventController(http.Controller): return list(registrations.values()) def _create_attendees_from_registration_post(self, event, registration_data): - attendees_sudo = request.env['event.registration'].sudo() - + registrations_to_create = [] for registration_values in registration_data: registration_values['event_id'] = event.id if not registration_values.get('partner_id'): registration_values['partner_id'] = request.env.user.partner_id.id - attendees_sudo += request.env['event.registration'].sudo().create(registration_values) + registrations_to_create.append(registration_values) - return attendees_sudo + return request.env['event.registration'].sudo().create(registrations_to_create) @http.route(['''/event//registration/confirm'''], type='http', auth="public", methods=['POST'], website=True) def registration_confirm(self, event, **post): diff --git a/addons/website_event_sale/controllers/main.py b/addons/website_event_sale/controllers/main.py index d9a84510319..00ca7cfd51c 100644 --- a/addons/website_event_sale/controllers/main.py +++ b/addons/website_event_sale/controllers/main.py @@ -29,17 +29,13 @@ class WebsiteEventSaleController(WebsiteEventController): if any(info.get('event_ticket_id') for info in registration_data): order = request.website.sale_get_order(force_create=1) - order_attendee_ids = set() for info in [r for r in registration_data if r.get('event_ticket_id')]: ticket = request.env['event.event.ticket'].sudo().browse(info['event_ticket_id']) - cart_values = order.with_context(event_ticket_id=ticket.id, fixed_price=True)._cart_update(product_id=ticket.product_id.id, add_qty=1, registration_data=[info]) - order_attendee_ids |= set(cart_values.get('attendee_ids', [])) + cart_values = order.with_context(event_ticket_id=ticket.id, fixed_price=True)._cart_update(product_id=ticket.product_id.id, add_qty=1) + info['sale_order_id'] = order.id + info['sale_order_line_id'] = cart_values.get('line_id') - attendees_sudo = super(WebsiteEventSaleController, self)._create_attendees_from_registration_post(event, [r for r in registration_data if not r['event_ticket_id']]) - if order_attendee_ids: - attendees_sudo |= request.env['event.registration'].sudo().browse(order_attendee_ids) - - return attendees_sudo + return super(WebsiteEventSaleController, self)._create_attendees_from_registration_post(event, registration_data) @http.route() def registration_confirm(self, event, **post): diff --git a/addons/website_event_sale/models/sale_order.py b/addons/website_event_sale/models/sale_order.py index 3a7c1c9f307..d092b751366 100644 --- a/addons/website_event_sale/models/sale_order.py +++ b/addons/website_event_sale/models/sale_order.py @@ -91,10 +91,8 @@ class SaleOrder(models.Model): attendees.action_cancel() # adding attendees elif ticket and new_qty > old_qty: - line = OrderLine.browse(values['line_id']) - line._update_registrations(confirm=False, cancel_to_draft=True, registration_data=kwargs.get('registration_data', [])) - # add in return values the registrations, to display them on website (or not) - values['attendee_ids'] = self.env['event.registration'].search([('sale_order_line_id', '=', line.id), ('state', '!=', 'cancel')]).ids + # do not do anything, attendees will be created at SO confirmation if not given previously + pass return values