diff options
| author | Debauche Stéphane <std@odoo.com> | 2020-01-13 10:43:24 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-08-17 16:29:49 +0000 |
| commit | d3b18979bfb5496fa4370fdf03a806c469127730 (patch) | |
| tree | b8498c1f5a8e7cbdd19a980bfb551c9642b59916 | |
| parent | f4e23f78bdeacb648d787f42addc75d74fbbbfa5 (diff) | |
[FIX] website_event: correctly support registration creation from frontend
Ensure values coming from frontend are correctly formatted.
Task ID-2169118
odoo/odoo#55967
odoo/enterprise#12438
X-original-commit: 492ef200892b991ea780af829c792d4079d2d66e
| -rw-r--r-- | addons/website_event/controllers/main.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index 31a930d6e66..66a94677953 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +import collections import babel.dates import re import werkzeug @@ -311,14 +312,16 @@ class WebsiteEventController(http.Controller): def _process_attendees_form(self, event, form_details): """ Process data posted from the attendee details form. - :param details: posted data from frontend registration form, like + :param form_details: posted data from frontend registration form, like {'1-name': 'r', '1-email': 'r@r.com', '1-phone': '', '1-event_ticket_id': '1'} """ - registration_fields = request.env['event.registration']._fields + allowed_fields = {'name', 'phone', 'email', 'mobile', 'event_id', 'partner_id', 'event_ticket_id'} + registration_fields = {key: v for key, v in request.env['event.registration']._fields.items() if key in allowed_fields} registrations = {} global_values = {} for key, value in form_details.items(): - counter, field_name = key.split('-', 1) + counter, attr_name = key.split('-', 1) + field_name = attr_name.split('-')[0] if field_name not in registration_fields: continue elif isinstance(registration_fields[field_name], (fields.Many2one, fields.Integer)): @@ -327,12 +330,13 @@ class WebsiteEventController(http.Controller): value = value if counter == '0': - global_values[field_name] = value + global_values[attr_name] = value else: - registrations.setdefault(counter, dict())[field_name] = value + registrations.setdefault(counter, dict())[attr_name] = value for key, value in global_values.items(): for registration in registrations.values(): registration[key] = value + return list(registrations.values()) def _create_attendees_from_registration_post(self, event, registration_data): |
