api: fix event endpoints (#61178)

This commit is contained in:
Lauréline Guérin 2022-01-27 16:55:22 +01:00
parent 391674ef20
commit 38e4b745b0
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 23 additions and 13 deletions

View File

@ -44,11 +44,11 @@ urlpatterns = [
url(
r'^agenda/(?P<agenda_identifier>[\w-]+)/event/$',
views.events,
name='api-event',
name='api-events',
),
url(
r'^agenda/(?P<agenda_identifier>[\w-]+)/event/(?P<event_identifier>[\w:-]+)/$',
views.events,
views.event,
name='api-event',
),
url(

View File

@ -2226,19 +2226,10 @@ class ResizeBooking(APIView):
resize_booking = ResizeBooking.as_view()
class Events(APIView):
class EventsAPI(APIView):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = serializers.EventSerializer
def get_object(self, agenda_identifier, event_identifier):
agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
if ':' in event_identifier:
return get_event_recurrence(agenda, event_identifier)
try:
return agenda.event_set.get(slug=event_identifier)
except Event.DoesNotExist:
raise Http404()
def post(self, request, agenda_identifier):
agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
@ -2251,6 +2242,23 @@ class Events(APIView):
event.create_all_recurrences()
return Response({'err': 0, 'data': get_event_detail(request, event)})
events = EventsAPI.as_view()
class EventAPI(APIView):
permission_classes = (permissions.IsAuthenticated,)
serializer_class = serializers.EventSerializer
def get_object(self, agenda_identifier, event_identifier):
agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
if ':' in event_identifier:
return get_event_recurrence(agenda, event_identifier)
try:
return agenda.event_set.get(slug=event_identifier)
except Event.DoesNotExist:
raise Http404()
def patch(self, request, agenda_identifier=None, event_identifier=None, format=None):
event = self.get_object(agenda_identifier, event_identifier)
serializer = self.serializer_class(event, data=request.data, partial=True)
@ -2310,7 +2318,7 @@ class Events(APIView):
return Response({'err': 0})
events = Events.as_view()
event = EventAPI.as_view()
class EventStatus(APIView):

View File

@ -337,6 +337,8 @@ def test_add_event(app, user):
'2021-12-18',
]
app.delete('/api/agenda/%s/event/' % agenda.slug, status=405) # forbidden
@pytest.mark.freeze_time('2021-11-01')
def test_update_event(app, user):