api: update meeting types API to be based on slugs (#13792)
This commit is contained in:
parent
6e1fb0aa94
commit
c33754433f
|
@ -25,8 +25,10 @@ urlpatterns = patterns('',
|
|||
url(r'agenda/(?P<agenda_identifier>[\w-]+)/fillslot/(?P<event_pk>[\w:-]+)/$', views.fillslot),
|
||||
url(r'agenda/(?P<agenda_identifier>[\w-]+)/status/(?P<event_pk>\w+)/$', views.slot_status),
|
||||
|
||||
url(r'agenda/meetings/(?P<pk>\w+)/datetimes/$', views.meeting_datetimes,
|
||||
name='api-agenda-meeting-datetimes'),
|
||||
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/(?P<meeting_identifier>[\w-]+)/datetimes/$',
|
||||
views.meeting_datetimes, name='api-agenda-meeting-datetimes'),
|
||||
|
||||
url(r'booking/(?P<booking_pk>\w+)/$', views.booking),
|
||||
url(r'booking/(?P<booking_pk>\w+)/cancel/$', views.cancel_booking),
|
||||
|
|
|
@ -76,8 +76,17 @@ datetimes = Datetimes.as_view()
|
|||
|
||||
|
||||
class MeetingDatetimes(GenericAPIView):
|
||||
def get(self, request, pk=None, format=None):
|
||||
meeting_type = MeetingType.objects.get(id=pk)
|
||||
def get(self, request, agenda_identifier=None, meeting_identifier=None, format=None):
|
||||
try:
|
||||
if agenda_identifier is None:
|
||||
# legacy access by meeting id
|
||||
meeting_type = MeetingType.objects.get(id=meeting_identifier)
|
||||
else:
|
||||
meeting_type = MeetingType.objects.get(slug=meeting_identifier,
|
||||
agenda__slug=agenda_identifier)
|
||||
except MeetingType.DoesNotExist:
|
||||
raise Http404()
|
||||
|
||||
agenda = meeting_type.agenda
|
||||
if agenda.kind != 'meetings':
|
||||
raise APIException('not a meetings agenda')
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
{% for meeting_type in object.meetingtype_set.all %}
|
||||
<li><a href="{% if user_can_manage %}{% url 'chrono-manager-meeting-type-edit' pk=meeting_type.id %}{% else %}#{% endif %}">
|
||||
{{meeting_type.label}}
|
||||
<span class="identifier">[{% trans "identifier:" %} {{meeting_type.id}}]</span></h2>
|
||||
<span class="identifier">[{% trans "identifier:" %} {{meeting_type.slug}}]</span></h2>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
|
|
@ -91,7 +91,7 @@ def test_datetimes_api(app, some_data):
|
|||
assert 'data' in resp.json
|
||||
assert len(resp.json['data']) == 3
|
||||
check_bookability(resp.json['data'])
|
||||
assert app.get('/api/agenda/%s/datetimes/' % agenda.id).json == resp.json
|
||||
assert app.get('/api/agenda/%s/datetimes/' % agenda.id).json == resp.json
|
||||
|
||||
agenda.minimal_booking_delay = 5
|
||||
agenda.save()
|
||||
|
@ -136,8 +136,14 @@ def test_datetime_api_label(app, some_data):
|
|||
|
||||
def test_datetimes_api_meetings_agenda(app, meetings_agenda):
|
||||
meeting_type = MeetingType.objects.get(agenda=meetings_agenda)
|
||||
resp = app.get('/api/agenda/meetings/%s/datetimes/' % meeting_type.id)
|
||||
api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (
|
||||
meeting_type.agenda.slug, meeting_type.slug)
|
||||
|
||||
resp = app.get('/api/agenda/%s/meetings/xxx/datetimes/' % meeting_type.agenda.slug, status=404)
|
||||
|
||||
resp = app.get(api_url)
|
||||
assert len(resp.json['data']) == 144
|
||||
assert resp.json == app.get('/api/agenda/meetings/%s/datetimes/' % meeting_type.id).json
|
||||
|
||||
meetings_agenda.minimal_booking_delay = 7
|
||||
meetings_agenda.maximal_booking_delay = 28
|
||||
|
|
Loading…
Reference in New Issue