api: return slot-bookings url in datetimes api (#44374)
This commit is contained in:
parent
549e64e4bb
commit
ff939fc570
|
@ -421,6 +421,12 @@ class Datetimes(APIView):
|
|||
'url': x.url,
|
||||
'disabled': bool(x.full),
|
||||
'api': {
|
||||
'bookings_url': request.build_absolute_uri(
|
||||
reverse(
|
||||
'api-event-bookings',
|
||||
kwargs={'agenda_identifier': agenda.slug, 'event_identifier': x.slug},
|
||||
)
|
||||
),
|
||||
'fillslot_url': request.build_absolute_uri(
|
||||
reverse(
|
||||
'api-fillslot',
|
||||
|
@ -1322,7 +1328,9 @@ class SlotBookings(APIView):
|
|||
permission_classes = (permissions.IsAuthenticated,)
|
||||
|
||||
def get_object(self, agenda_identifier, event_identifier):
|
||||
return get_object_or_404(Event, slug=event_identifier, agenda__slug=agenda_identifier)
|
||||
return get_object_or_404(
|
||||
Event, slug=event_identifier, agenda__slug=agenda_identifier, agenda__kind='events'
|
||||
)
|
||||
|
||||
def get(self, request, agenda_identifier=None, event_identifier=None, format=None):
|
||||
if not request.GET.get('user_external_id'):
|
||||
|
|
|
@ -376,13 +376,28 @@ def test_datetime_api_label(app, some_data):
|
|||
assert 'Hello world' in [x['text'] for x in resp.json['data']]
|
||||
|
||||
|
||||
def test_datetime_api_status_url(app, some_data):
|
||||
agenda = Agenda.objects.get(label=u'Foo bar 2')
|
||||
def test_datetime_api_urls(app):
|
||||
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,
|
||||
)
|
||||
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug)
|
||||
for datum in resp.json['data']:
|
||||
assert urlparse.urlparse(datum['api']['bookings_url']).path == '/api/agenda/%s/bookings/%s/' % (
|
||||
agenda.slug,
|
||||
event.slug,
|
||||
)
|
||||
assert urlparse.urlparse(datum['api']['fillslot_url']).path == '/api/agenda/%s/fillslot/%s/' % (
|
||||
agenda.slug,
|
||||
event.slug,
|
||||
)
|
||||
assert urlparse.urlparse(datum['api']['status_url']).path == '/api/agenda/%s/status/%s/' % (
|
||||
agenda.slug,
|
||||
datum['slug'],
|
||||
event.slug,
|
||||
)
|
||||
|
||||
|
||||
|
@ -1794,6 +1809,15 @@ def test_bookings(app, user):
|
|||
resp = app.get('/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug))
|
||||
assert resp.json['err'] == 1
|
||||
|
||||
# wrong kind
|
||||
agenda.kind = 'meetings'
|
||||
agenda.save()
|
||||
resp = app.get(
|
||||
'/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug),
|
||||
params={'user_external_id': '42'},
|
||||
status=404,
|
||||
)
|
||||
|
||||
|
||||
def test_waiting_list_datetimes(app, some_data, user):
|
||||
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id
|
||||
|
|
Loading…
Reference in New Issue