api: include meeting types endpoints in /agenda/ API (#16448)
This commit is contained in:
parent
d46adc81c0
commit
678b297adf
|
@ -32,18 +32,31 @@ from ..agendas.models import Agenda, Event, Booking, MeetingType, TimePeriod
|
|||
class Agendas(GenericAPIView):
|
||||
permission_classes = ()
|
||||
|
||||
def get(self, request, agenda_identifier=None, format=None):
|
||||
response = {'data': [{
|
||||
'id': x.id,
|
||||
'slug': x.slug,
|
||||
'api': {
|
||||
'datetimes_url': request.build_absolute_uri(
|
||||
reverse('api-agenda-datetimes',
|
||||
kwargs={'agenda_identifier': x.slug})),
|
||||
},
|
||||
'text': x.label}
|
||||
for x in Agenda.objects.all().order_by('label')]}
|
||||
return Response(response)
|
||||
def get(self, request, format=None):
|
||||
agendas = []
|
||||
for agenda in Agenda.objects.all().order_by('label'):
|
||||
agenda_data = {
|
||||
'id': agenda.id,
|
||||
'slug': agenda.slug,
|
||||
'text': agenda.label,
|
||||
'kind': agenda.kind,
|
||||
}
|
||||
|
||||
if agenda.kind == 'events':
|
||||
agenda_data['api'] = {
|
||||
'datetimes_url': request.build_absolute_uri(
|
||||
reverse('api-agenda-datetimes',
|
||||
kwargs={'agenda_identifier': agenda.slug}))
|
||||
}
|
||||
elif agenda.kind == 'meetings':
|
||||
agenda_data['api'] = {
|
||||
'meetings_url': request.build_absolute_uri(
|
||||
reverse('api-agenda-meetings',
|
||||
kwargs={'agenda_identifier': agenda.slug}))
|
||||
}
|
||||
agendas.append(agenda_data)
|
||||
|
||||
return Response({'data': agendas})
|
||||
|
||||
agendas = Agendas.as_view()
|
||||
|
||||
|
|
|
@ -84,14 +84,18 @@ def meetings_agenda(time_zone, mock_now):
|
|||
time_period.save()
|
||||
return agenda
|
||||
|
||||
def test_agendas_api(app, some_data):
|
||||
def test_agendas_api(app, some_data, meetings_agenda):
|
||||
agenda1 = Agenda.objects.filter(label=u'Foo bar')[0]
|
||||
agenda2 = Agenda.objects.filter(label=u'Foo bar2')[0]
|
||||
resp = app.get('/api/agenda/')
|
||||
assert resp.json == {'data': [
|
||||
{'text': 'Foo bar', 'id': agenda1.id, 'slug': u'foo-bar',
|
||||
{'text': 'Foo bar', 'id': agenda1.id, 'slug': u'foo-bar', 'kind': 'events',
|
||||
'api': {'datetimes_url': 'http://testserver/api/agenda/%s/datetimes/' % agenda1.slug}},
|
||||
{'text': 'Foo bar2', 'id': agenda2.id, 'slug': u'foo-bar2',
|
||||
{'text': 'Foo bar Meeting', 'id': meetings_agenda.id, 'slug': u'foo-bar-meeting',
|
||||
'kind': 'meetings',
|
||||
'api': {'meetings_url': 'http://testserver/api/agenda/%s/meetings/' % meetings_agenda.slug},
|
||||
},
|
||||
{'text': 'Foo bar2', 'id': agenda2.id, 'slug': u'foo-bar2', 'kind': 'events',
|
||||
'api': {'datetimes_url': 'http://testserver/api/agenda/%s/datetimes/' % agenda2.slug}}
|
||||
]}
|
||||
|
||||
|
|
Loading…
Reference in New Issue