From c35dffb1bbf9db8f41a89ec49f549fc3f36bd82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Thu, 2 Mar 2023 11:11:46 +0100 Subject: [PATCH] manager: fix check page with bad extra data values (#74872) --- chrono/api/views.py | 1 - chrono/manager/views.py | 2 +- tests/manager/test_event.py | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/chrono/api/views.py b/chrono/api/views.py index 39593ac0..31d4ffbb 100644 --- a/chrono/api/views.py +++ b/chrono/api/views.py @@ -724,7 +724,6 @@ def make_booking(event, payload, extra_data, primary_booking=None, in_waiting_li def get_extra_data(request, payload): extra_data = {} for k, v in request.data.items(): - print(k, v) if k not in payload: if isinstance(v, (list, dict)): raise APIErrorBadRequest(N_('wrong type for extra_data %s value') % k) diff --git a/chrono/manager/views.py b/chrono/manager/views.py index efa6abc4..11c3ab02 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -2543,7 +2543,7 @@ class EventCheckView(ViewableAgendaMixin, DetailView): ).values_list('extra_data', flat=True) for extra_data in list(extra_data_from_booked) + list(extra_data_from_subscriptions): 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 = sorted(filters.items()) filters = {k: sorted(list(v)) for k, v in filters} diff --git a/tests/manager/test_event.py b/tests/manager/test_event.py index 2cdf57f1..8bc2c011 100644 --- a/tests/manager/test_event.py +++ b/tests/manager/test_event.py @@ -1758,7 +1758,7 @@ def test_event_check_filters(check_types, app, admin_user): user_external_id='user:1', user_first_name='User', 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, ) Booking.objects.create( @@ -1837,7 +1837,7 @@ def test_event_check_filters(check_types, app, admin_user): user_external_id='subscription:1', user_first_name='Subscription', 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_end=event.start_datetime + datetime.timedelta(days=1), )