manager: fix check page with bad extra data values (#74872)
gitea/chrono/pipeline/head This commit looks good Details

This commit is contained in:
Lauréline Guérin 2023-03-02 11:11:46 +01:00
parent ebc237cf56
commit c35dffb1bb
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 3 additions and 4 deletions

View File

@ -724,7 +724,6 @@ def make_booking(event, payload, extra_data, primary_booking=None, in_waiting_li
def get_extra_data(request, payload): def get_extra_data(request, payload):
extra_data = {} extra_data = {}
for k, v in request.data.items(): for k, v in request.data.items():
print(k, v)
if k not in payload: if k not in payload:
if isinstance(v, (list, dict)): if isinstance(v, (list, dict)):
raise APIErrorBadRequest(N_('wrong type for extra_data %s value') % k) raise APIErrorBadRequest(N_('wrong type for extra_data %s value') % k)

View File

@ -2543,7 +2543,7 @@ class EventCheckView(ViewableAgendaMixin, DetailView):
).values_list('extra_data', flat=True) ).values_list('extra_data', flat=True)
for extra_data in list(extra_data_from_booked) + list(extra_data_from_subscriptions): for extra_data in list(extra_data_from_booked) + list(extra_data_from_subscriptions):
for k, v in extra_data.items(): for k, v in extra_data.items():
if k in agenda_filters: if k in agenda_filters and not isinstance(v, (list, dict)):
filters[k].add(v) filters[k].add(v)
filters = sorted(filters.items()) filters = sorted(filters.items())
filters = {k: sorted(list(v)) for k, v in filters} filters = {k: sorted(list(v)) for k, v in filters}

View File

@ -1758,7 +1758,7 @@ def test_event_check_filters(check_types, app, admin_user):
user_external_id='user:1', user_external_id='user:1',
user_first_name='User', user_first_name='User',
user_last_name='foo-val1 bar-none presence', user_last_name='foo-val1 bar-none presence',
extra_data={'foo': 'val1'}, extra_data={'foo': 'val1', 'bar': ['val1']}, # bar is ignored, wrong value
user_was_present=True, user_was_present=True,
) )
Booking.objects.create( Booking.objects.create(
@ -1837,7 +1837,7 @@ def test_event_check_filters(check_types, app, admin_user):
user_external_id='subscription:1', user_external_id='subscription:1',
user_first_name='Subscription', user_first_name='Subscription',
user_last_name='foo-val1 bar-none', user_last_name='foo-val1 bar-none',
extra_data={'foo': 'val1'}, extra_data={'foo': 'val1', 'bar': ['val1']}, # bar is ignored, wrong value
date_start=event.start_datetime, date_start=event.start_datetime,
date_end=event.start_datetime + datetime.timedelta(days=1), date_end=event.start_datetime + datetime.timedelta(days=1),
) )