0001-api-return-slot-bookings-url-in-datetimes-api-44374.patch
chrono/api/views.py | ||
---|---|---|
421 | 421 |
'url': x.url, |
422 | 422 |
'disabled': bool(x.full), |
423 | 423 |
'api': { |
424 |
'bookings_url': request.build_absolute_uri( |
|
425 |
reverse( |
|
426 |
'api-event-bookings', |
|
427 |
kwargs={'agenda_identifier': agenda.slug, 'event_identifier': x.slug}, |
|
428 |
) |
|
429 |
), |
|
424 | 430 |
'fillslot_url': request.build_absolute_uri( |
425 | 431 |
reverse( |
426 | 432 |
'api-fillslot', |
... | ... | |
1283 | 1289 |
permission_classes = (permissions.IsAuthenticated,) |
1284 | 1290 | |
1285 | 1291 |
def get_object(self, agenda_identifier, event_identifier): |
1286 |
return get_object_or_404(Event, slug=event_identifier, agenda__slug=agenda_identifier) |
|
1292 |
return get_object_or_404( |
|
1293 |
Event, slug=event_identifier, agenda__slug=agenda_identifier, agenda__kind='events' |
|
1294 |
) |
|
1287 | 1295 | |
1288 | 1296 |
def get(self, request, agenda_identifier=None, event_identifier=None, format=None): |
1289 | 1297 |
if not request.GET.get('user_external_id'): |
tests/test_api.py | ||
---|---|---|
354 | 354 |
assert 'Hello world' in [x['text'] for x in resp.json['data']] |
355 | 355 | |
356 | 356 | |
357 |
def test_datetime_api_status_url(app, some_data): |
|
358 |
agenda = Agenda.objects.get(label=u'Foo bar 2') |
|
357 |
def test_datetime_api_urls(app): |
|
358 |
agenda = Agenda.objects.create(label='Foo bar', kind='events', minimal_booking_delay=0) |
|
359 |
event = Event.objects.create( |
|
360 |
slug='event-slug', |
|
361 |
start_datetime=(now() + datetime.timedelta(days=5)).replace(hour=10, minute=0), |
|
362 |
places=5, |
|
363 |
waiting_list_places=5, |
|
364 |
agenda=agenda, |
|
365 |
) |
|
359 | 366 |
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug) |
360 | 367 |
for datum in resp.json['data']: |
368 |
assert urlparse.urlparse(datum['api']['bookings_url']).path == '/api/agenda/%s/bookings/%s/' % ( |
|
369 |
agenda.slug, |
|
370 |
event.slug, |
|
371 |
) |
|
372 |
assert urlparse.urlparse(datum['api']['fillslot_url']).path == '/api/agenda/%s/fillslot/%s/' % ( |
|
373 |
agenda.slug, |
|
374 |
event.slug, |
|
375 |
) |
|
361 | 376 |
assert urlparse.urlparse(datum['api']['status_url']).path == '/api/agenda/%s/status/%s/' % ( |
362 | 377 |
agenda.slug, |
363 |
datum['slug'],
|
|
378 |
event.slug,
|
|
364 | 379 |
) |
365 | 380 | |
366 | 381 | |
... | ... | |
1772 | 1787 |
resp = app.get('/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug)) |
1773 | 1788 |
assert resp.json['err'] == 1 |
1774 | 1789 | |
1790 |
# wrong kind |
|
1791 |
agenda.kind = 'meetings' |
|
1792 |
agenda.save() |
|
1793 |
resp = app.get( |
|
1794 |
'/api/agenda/%s/bookings/%s/' % (agenda.slug, event.slug), |
|
1795 |
params={'user_external_id': '42'}, |
|
1796 |
status=404, |
|
1797 |
) |
|
1798 | ||
1775 | 1799 | |
1776 | 1800 |
def test_waiting_list_datetimes(app, some_data, user): |
1777 | 1801 |
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id |
1778 |
- |