29 |
29 |
from ..agendas.models import Agenda, Event, Booking, MeetingType, TimePeriod
|
30 |
30 |
|
31 |
31 |
|
|
32 |
def get_agenda_data(request, agenda):
|
|
33 |
agenda_data = {
|
|
34 |
'id': agenda.id,
|
|
35 |
'slug': agenda.slug,
|
|
36 |
'text': agenda.label,
|
|
37 |
'kind': agenda.kind,
|
|
38 |
}
|
|
39 |
|
|
40 |
if agenda.kind == 'events':
|
|
41 |
agenda_data['api'] = {
|
|
42 |
'datetimes_url': request.build_absolute_uri(
|
|
43 |
reverse('api-agenda-datetimes',
|
|
44 |
kwargs={'agenda_identifier': agenda.slug}))
|
|
45 |
}
|
|
46 |
elif agenda.kind == 'meetings':
|
|
47 |
agenda_data['api'] = {
|
|
48 |
'meetings_url': request.build_absolute_uri(
|
|
49 |
reverse('api-agenda-meetings',
|
|
50 |
kwargs={'agenda_identifier': agenda.slug}))
|
|
51 |
}
|
|
52 |
return agenda_data
|
|
53 |
|
|
54 |
|
32 |
55 |
class Agendas(GenericAPIView):
|
33 |
56 |
permission_classes = ()
|
34 |
57 |
|
35 |
58 |
def get(self, request, format=None):
|
36 |
59 |
agendas = []
|
37 |
60 |
for agenda in Agenda.objects.all().order_by('label'):
|
38 |
|
agenda_data = {
|
39 |
|
'id': agenda.id,
|
40 |
|
'slug': agenda.slug,
|
41 |
|
'text': agenda.label,
|
42 |
|
'kind': agenda.kind,
|
43 |
|
}
|
44 |
|
|
45 |
|
if agenda.kind == 'events':
|
46 |
|
agenda_data['api'] = {
|
47 |
|
'datetimes_url': request.build_absolute_uri(
|
48 |
|
reverse('api-agenda-datetimes',
|
49 |
|
kwargs={'agenda_identifier': agenda.slug}))
|
50 |
|
}
|
51 |
|
elif agenda.kind == 'meetings':
|
52 |
|
agenda_data['api'] = {
|
53 |
|
'meetings_url': request.build_absolute_uri(
|
54 |
|
reverse('api-agenda-meetings',
|
55 |
|
kwargs={'agenda_identifier': agenda.slug}))
|
56 |
|
}
|
|
61 |
agenda_data = get_agenda_data(request, agenda)
|
57 |
62 |
agendas.append(agenda_data)
|
58 |
63 |
|
59 |
64 |
return Response({'data': agendas})
|
... | ... | |
61 |
66 |
agendas = Agendas.as_view()
|
62 |
67 |
|
63 |
68 |
|
|
69 |
class AgendaAPIView(GenericAPIView):
|
|
70 |
"""View returning detail of a single agenda
|
|
71 |
"""
|
|
72 |
permission_classes = ()
|
|
73 |
|
|
74 |
def get(self, request, agenda_identifier):
|
|
75 |
try:
|
|
76 |
agenda = Agenda.objects.get(slug=agenda_identifier)
|
|
77 |
except Agenda.DoesNotExist:
|
|
78 |
try:
|
|
79 |
# legacy access by agenda id
|
|
80 |
agenda = Agenda.objects.get(id=int(agenda_identifier))
|
|
81 |
except (ValueError, Agenda.DoesNotExist):
|
|
82 |
raise Http404()
|
|
83 |
|
|
84 |
agenda_data = get_agenda_data(request, agenda)
|
|
85 |
return Response({'data': agenda_data})
|
|
86 |
|
|
87 |
|
|
88 |
agenda = AgendaAPIView.as_view()
|
|
89 |
|
|
90 |
|
64 |
91 |
class Datetimes(GenericAPIView):
|
65 |
92 |
permission_classes = ()
|
66 |
93 |
|