api: don't list cancelled bookings in slot_bookings api (#44160)

This commit is contained in:
Lauréline Guérin 2020-06-18 09:25:44 +02:00
parent df6328dc52
commit 82d1a53b24
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 26 additions and 8 deletions

View File

@ -1294,7 +1294,9 @@ class SlotBookings(APIView):
return Response(response)
event = self.get_object(agenda_identifier, event_identifier)
booking_queryset = event.booking_set.filter(
user_external_id=request.GET['user_external_id'], primary_booking__isnull=True
user_external_id=request.GET['user_external_id'],
primary_booking__isnull=True,
cancellation_datetime__isnull=True,
).order_by('pk')
response = {
'err': 0,

View File

@ -1693,13 +1693,15 @@ def test_status(app, some_data, user):
resp = app.get('/api/agenda/%s/status/%s/' % (agenda_id, 'unknown'), status=404)
def test_bookings(app, some_data, user):
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
event = Event.objects.filter(agenda=agenda).exclude(start_datetime__lt=now())[0]
event.slug = 'event-slug'
event.places = 5
event.waiting_list_places = 5
event.save()
def test_bookings(app, user):
agenda = Agenda.objects.create(label='Foo bar', kind='events', minimal_booking_delay=0)
event = Event.objects.create(
slug='event-slug',
start_datetime=(now() + datetime.timedelta(days=5)).replace(hour=10, minute=0),
places=5,
waiting_list_places=5,
agenda=agenda,
)
# create a booking not on the waiting list
primary1 = Booking.objects.create(event=event, in_waiting_list=False, user_external_id='42')
@ -1724,6 +1726,7 @@ def test_bookings(app, some_data, user):
'/api/agenda/%s/bookings/foobar/' % (agenda.slug), params={'user_external_id': '42'}, status=404
)
# search for '42' external user
resp = app.get(
'/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': '42'}
)
@ -1732,6 +1735,17 @@ def test_bookings(app, some_data, user):
{'booking_id': primary1.pk, 'in_waiting_list': False},
{'booking_id': primary4.pk, 'in_waiting_list': True},
]
# primary1 is cancelled
primary1.cancel()
resp = app.get(
'/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': '42'}
)
assert resp.json['err'] == 0
assert resp.json['data'] == [
{'booking_id': primary4.pk, 'in_waiting_list': True},
]
# search for 'foobar' external user
resp = app.get(
'/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': 'foobar'}
)
@ -1739,6 +1753,8 @@ def test_bookings(app, some_data, user):
assert resp.json['data'] == [
{'booking_id': primary2.pk, 'in_waiting_list': False},
]
# no bookings for this external user
resp = app.get(
'/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), params={'user_external_id': '35'}
)