api: add new API to get list of desks (#19069)
This commit is contained in:
parent
8e55b43a2a
commit
169cc6a0ab
|
@ -31,6 +31,8 @@ urlpatterns = [
|
|||
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-]+)/desks/$',
|
||||
views.agenda_desk_list, name='api-agenda-desks'),
|
||||
url(r'agenda/(?P<agenda_identifier>[\w-]+)/meetings/(?P<meeting_identifier>[\w-]+)/datetimes/$',
|
||||
views.meeting_datetimes, name='api-agenda-meeting-datetimes'),
|
||||
|
||||
|
|
|
@ -104,6 +104,9 @@ def get_agenda_detail(request, agenda):
|
|||
agenda_detail['api'] = {
|
||||
'meetings_url': request.build_absolute_uri(
|
||||
reverse('api-agenda-meetings',
|
||||
kwargs={'agenda_identifier': agenda.slug})),
|
||||
'desks_url': request.build_absolute_uri(
|
||||
reverse('api-agenda-desks',
|
||||
kwargs={'agenda_identifier': agenda.slug}))
|
||||
}
|
||||
|
||||
|
@ -273,6 +276,23 @@ class MeetingList(GenericAPIView):
|
|||
meeting_list = MeetingList.as_view()
|
||||
|
||||
|
||||
class AgendaDeskList(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')
|
||||
|
||||
desks = [{'id': x.slug, 'text': x.label} for x in agenda.desk_set.all()]
|
||||
return Response({'data': desks})
|
||||
|
||||
agenda_desk_list = AgendaDeskList.as_view()
|
||||
|
||||
|
||||
class SlotSerializer(serializers.Serializer):
|
||||
pass
|
||||
|
||||
|
|
|
@ -104,7 +104,9 @@ def test_agendas_api(app, some_data, meetings_agenda):
|
|||
'api': {'datetimes_url': 'http://testserver/api/agenda/%s/datetimes/' % agenda1.slug}},
|
||||
{'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},
|
||||
'api': {'meetings_url': 'http://testserver/api/agenda/%s/meetings/' % meetings_agenda.slug,
|
||||
'desks_url': 'http://testserver/api/agenda/%s/desks/' % 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}}
|
||||
|
@ -129,6 +131,22 @@ def test_agendas_meetingtypes_api(app, some_data, meetings_agenda):
|
|||
resp = app.get('/api/agenda/xxxx/meetings/', status=404)
|
||||
|
||||
|
||||
def test_agendas_desks_api(app, some_data, meetings_agenda):
|
||||
resp = app.get('/api/agenda/%s/desks/' % meetings_agenda.slug)
|
||||
assert resp.json == {'data': [
|
||||
{'text': 'Desk 1',
|
||||
'id': 'desk-1',
|
||||
}
|
||||
]}
|
||||
|
||||
# wrong kind
|
||||
agenda1 = Agenda.objects.filter(label=u'Foo bar')[0]
|
||||
resp = app.get('/api/agenda/%s/desks/' % agenda1.slug, status=404)
|
||||
|
||||
# unknown
|
||||
resp = app.get('/api/agenda/xxxx/desks/', status=404)
|
||||
|
||||
|
||||
def test_datetimes_api(app, some_data):
|
||||
agenda = Agenda.objects.filter(label=u'Foo bar')[0]
|
||||
|
||||
|
|
Loading…
Reference in New Issue