api: include accept/cancel URLs in booking response (#16126)
This commit is contained in:
parent
59f03a9fbe
commit
2e0f219a66
|
@ -32,6 +32,8 @@ urlpatterns = [
|
|||
views.meeting_datetimes, name='api-agenda-meeting-datetimes'),
|
||||
|
||||
url(r'booking/(?P<booking_pk>\w+)/$', views.booking),
|
||||
url(r'booking/(?P<booking_pk>\w+)/cancel/$', views.cancel_booking),
|
||||
url(r'booking/(?P<booking_pk>\w+)/accept/$', views.accept_booking),
|
||||
url(r'booking/(?P<booking_pk>\w+)/cancel/$', views.cancel_booking,
|
||||
name='api-cancel-booking'),
|
||||
url(r'booking/(?P<booking_pk>\w+)/accept/$', views.accept_booking,
|
||||
name='api-accept-booking'),
|
||||
]
|
||||
|
|
|
@ -207,7 +207,14 @@ class Fillslot(GenericAPIView):
|
|||
'in_waiting_list': new_booking.in_waiting_list,
|
||||
'booking_id': new_booking.id,
|
||||
'datetime': localtime(event.start_datetime),
|
||||
'api': {
|
||||
'cancel_url': reverse('api-cancel-booking', kwargs={'booking_pk': new_booking.id})
|
||||
}
|
||||
}
|
||||
if new_booking.in_waiting_list:
|
||||
response['api']['accept_url'] = reverse('api-accept-booking',
|
||||
kwargs={'booking_pk': new_booking.id})
|
||||
|
||||
return Response(response)
|
||||
|
||||
fillslot = Fillslot.as_view()
|
||||
|
|
|
@ -202,6 +202,8 @@ def test_booking_api(app, some_data, user):
|
|||
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event.id))
|
||||
Booking.objects.get(id=resp.json['booking_id'])
|
||||
assert resp.json['datetime'] == event.start_datetime.isoformat().replace('+00:00', 'Z')
|
||||
assert 'accept_url' not in resp.json['api']
|
||||
assert 'cancel_url' in resp.json['api']
|
||||
assert Booking.objects.count() == 1
|
||||
|
||||
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.id, event.id))
|
||||
|
@ -317,6 +319,7 @@ def test_booking_cancellation_post_api(app, some_data, user):
|
|||
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda_id, event.id))
|
||||
booking_id = resp.json['booking_id']
|
||||
assert Booking.objects.count() == 1
|
||||
assert urlparse.urlparse(resp.json['api']['cancel_url']).path == '/api/booking/%s/cancel/' % booking_id
|
||||
resp = app.post('/api/booking/%s/cancel/' % booking_id)
|
||||
assert Booking.objects.filter(cancellation_datetime__isnull=False).count() == 1
|
||||
|
||||
|
@ -438,6 +441,8 @@ def test_waiting_list_booking(app, some_data, user):
|
|||
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda_id, event.id), status=200)
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['in_waiting_list'] is True
|
||||
assert 'accept_url' in resp.json['api']
|
||||
assert 'cancel_url' in resp.json['api']
|
||||
|
||||
# cancel a booking that was not on the waiting list
|
||||
booking = Booking.objects.filter(event=event, in_waiting_list=False)[0]
|
||||
|
|
Loading…
Reference in New Issue