api: add endpoint to get list of meeting types (#13360)
This commit is contained in:
parent
3775bb5b7d
commit
998b6575f8
|
@ -28,6 +28,8 @@ urlpatterns = [
|
|||
|
||||
url(r'agenda/meetings/(?P<meeting_identifier>[\w-]+)/datetimes/$',
|
||||
views.meeting_datetimes, name='api-agenda-meeting-datetimes-legacy'),
|
||||
url(r'agenda/(?P<agenda_identifier>[\w-]+)/meetings/$',
|
||||
views.meeting_list, name='api-agenda-meetings'),
|
||||
url(r'agenda/(?P<agenda_identifier>[\w-]+)/meetings/(?P<meeting_identifier>[\w-]+)/datetimes/$',
|
||||
views.meeting_datetimes, name='api-agenda-meeting-datetimes'),
|
||||
|
||||
|
|
|
@ -155,6 +155,35 @@ class MeetingDatetimes(GenericAPIView):
|
|||
meeting_datetimes = MeetingDatetimes.as_view()
|
||||
|
||||
|
||||
class MeetingList(GenericAPIView):
|
||||
permission_classes = ()
|
||||
|
||||
def get(self, request, agenda_identifier=None, format=None):
|
||||
try:
|
||||
agenda = Agenda.objects.get(slug=agenda_identifier)
|
||||
except Agenda.DoesNotExist:
|
||||
raise Http404()
|
||||
if agenda.kind != 'meetings':
|
||||
raise Http404('agenda found, but it was not a meetings agenda')
|
||||
|
||||
meeting_types = []
|
||||
for meeting_type in agenda.meetingtype_set.all():
|
||||
meeting_types.append({
|
||||
'text': meeting_type.label,
|
||||
'id': meeting_type.slug,
|
||||
'api': {
|
||||
'datetimes_url': request.build_absolute_uri(
|
||||
reverse('api-agenda-meeting-datetimes',
|
||||
kwargs={'agenda_identifier': agenda.slug,
|
||||
'meeting_identifier': meeting_type.slug})),
|
||||
}
|
||||
})
|
||||
|
||||
return Response({'data': meeting_types})
|
||||
|
||||
meeting_list = MeetingList.as_view()
|
||||
|
||||
|
||||
class SlotSerializer(serializers.Serializer):
|
||||
pass
|
||||
|
||||
|
|
|
@ -95,6 +95,25 @@ def test_agendas_api(app, some_data):
|
|||
'api': {'datetimes_url': 'http://testserver/api/agenda/%s/datetimes/' % agenda2.slug}}
|
||||
]}
|
||||
|
||||
def test_agendas_meetingtypes_api(app, some_data, meetings_agenda):
|
||||
resp = app.get('/api/agenda/%s/meetings/' % meetings_agenda.slug)
|
||||
assert resp.json == {'data': [
|
||||
{'text': 'Blah',
|
||||
'id': 'blah',
|
||||
'api': {
|
||||
'datetimes_url': 'http://testserver/api/agenda/foo-bar-meeting/meetings/blah/datetimes/',
|
||||
}
|
||||
}
|
||||
]}
|
||||
|
||||
# wrong kind
|
||||
agenda1 = Agenda.objects.filter(label=u'Foo bar')[0]
|
||||
resp = app.get('/api/agenda/%s/meetings/' % agenda1.slug, status=404)
|
||||
|
||||
# unknown
|
||||
resp = app.get('/api/agenda/xxxx/meetings/', status=404)
|
||||
|
||||
|
||||
def test_datetimes_api(app, some_data):
|
||||
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
|
||||
|
||||
|
|
Loading…
Reference in New Issue