[FIX] website_event : check ticket id
There was previously no check that the ticket id belong to the selected event. For better data integrity, this should be the case closes odoo/odoo#112147 X-original-commit: ea645c9c9f301c340d95bd30260b3aa0cd255920 Signed-off-by: Vranckx Florian (flvr) <flvr@odoo.com> Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
@@ -20,7 +20,7 @@ from odoo.http import request
|
||||
from odoo.osv import expression
|
||||
from odoo.tools.misc import get_lang
|
||||
from odoo.tools import lazy
|
||||
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
class WebsiteEventController(http.Controller):
|
||||
|
||||
@@ -262,6 +262,9 @@ class WebsiteEventController(http.Controller):
|
||||
"""
|
||||
allowed_fields = request.env['event.registration']._get_website_registration_allowed_fields()
|
||||
registration_fields = {key: v for key, v in request.env['event.registration']._fields.items() if key in allowed_fields}
|
||||
for ticket_id in list(filter(lambda x: x is not None, [form_details[field] if 'event_ticket_id' in field else None for field in form_details.keys()])):
|
||||
if int(ticket_id) not in event.event_ticket_ids.ids and len(event.event_ticket_ids.ids) > 0:
|
||||
raise UserError(_("This ticket is not available for sale for this event"))
|
||||
registrations = {}
|
||||
global_values = {}
|
||||
for key, value in form_details.items():
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~16.1\n"
|
||||
"Project-Id-Version: Odoo Server saas~16.1+e\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-17 10:53+0000\n"
|
||||
"PO-Revision-Date: 2023-01-17 10:53+0000\n"
|
||||
"POT-Creation-Date: 2023-02-07 13:49+0000\n"
|
||||
"PO-Revision-Date: 2023-02-07 13:49+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -849,8 +849,8 @@ msgid "Ref:"
|
||||
msgstr ""
|
||||
|
||||
#. module: website_event
|
||||
#. odoo-python
|
||||
#. odoo-javascript
|
||||
#. odoo-python
|
||||
#: code:addons/website_event/models/event_event.py:0
|
||||
#: code:addons/website_event/static/src/js/register_toaster_widget.js:0
|
||||
#: model:ir.model.fields.selection,name:website_event.selection__website_event_menu__menu_type__register
|
||||
@@ -1049,6 +1049,13 @@ msgstr ""
|
||||
msgid "This technical menu displays all event sub-menu items."
|
||||
msgstr ""
|
||||
|
||||
#. module: website_event
|
||||
#. odoo-python
|
||||
#: code:addons/website_event/controllers/main.py:0
|
||||
#, python-format
|
||||
msgid "This ticket is not available for sale for this event"
|
||||
msgstr ""
|
||||
|
||||
#. module: website_event
|
||||
#: model_terms:ir.ui.view,arch_db:website_event.registration_attendee_details
|
||||
msgid "Ticket #"
|
||||
|
||||
@@ -44,16 +44,26 @@ class TestEventData(TestEventQuestionCommon):
|
||||
'date_begin': FieldsDatetime.to_string(datetime.today() + timedelta(days=1)),
|
||||
'date_end': FieldsDatetime.to_string(datetime.today() + timedelta(days=15)),
|
||||
})
|
||||
ticket_id_1 = self.env['event.event.ticket'].create([{
|
||||
'name': 'Regular',
|
||||
'event_id': event.id,
|
||||
'seats_max': 200,
|
||||
}])
|
||||
ticket_id_2 = self.env['event.event.ticket'].create([{
|
||||
'name': 'VIP',
|
||||
'event_id': event.id,
|
||||
'seats_max': 200,
|
||||
}])
|
||||
|
||||
form_details = {
|
||||
'1-name': 'Pixis',
|
||||
'1-email': 'pixis@gmail.com',
|
||||
'1-phone': '+32444444444',
|
||||
'1-event_ticket_id': '2',
|
||||
'1-event_ticket_id': ticket_id_1.id,
|
||||
'2-name': 'Geluchat',
|
||||
'2-email': 'geluchat@gmail.com',
|
||||
'2-phone': '+32777777777',
|
||||
'2-event_ticket_id': '3',
|
||||
'2-event_ticket_id': ticket_id_2.id,
|
||||
'question_answer-1-%s' % self.event_question_1.id: '5',
|
||||
'question_answer-2-%s' % self.event_question_1.id: '9',
|
||||
'question_answer-0-%s' % self.event_question_2.id: '7',
|
||||
@@ -64,12 +74,12 @@ class TestEventData(TestEventQuestionCommon):
|
||||
registrations = WebsiteEvent()._process_attendees_form(event, form_details)
|
||||
|
||||
self.assertEqual(registrations, [
|
||||
{'name': 'Pixis', 'email': 'pixis@gmail.com', 'phone': '+32444444444', 'event_ticket_id': 2,
|
||||
{'name': 'Pixis', 'email': 'pixis@gmail.com', 'phone': '+32444444444', 'event_ticket_id': ticket_id_1.id,
|
||||
'registration_answer_ids': [
|
||||
(0, 0, {'question_id': self.event_question_1.id, 'value_answer_id': 5}),
|
||||
(0, 0, {'question_id': self.event_question_2.id, 'value_answer_id': 7}),
|
||||
(0, 0, {'question_id': self.event_question_3.id, 'value_text_box': 'Free Text'})]},
|
||||
{'name': 'Geluchat', 'email': 'geluchat@gmail.com', 'phone': '+32777777777', 'event_ticket_id': 3,
|
||||
{'name': 'Geluchat', 'email': 'geluchat@gmail.com', 'phone': '+32777777777', 'event_ticket_id': ticket_id_2.id,
|
||||
'registration_answer_ids': [
|
||||
(0, 0, {'question_id': self.event_question_1.id, 'value_answer_id': 9}),
|
||||
(0, 0, {'question_id': self.event_question_2.id, 'value_answer_id': 7}),
|
||||
|
||||
Reference in New Issue
Block a user