Projet

Général

Profil

0001-api-fix-event-endpoints-61178.patch

Lauréline Guérin, 27 janvier 2022 16:56

Télécharger (3,35 ko)

Voir les différences:

Subject: [PATCH] api: fix event endpoints (#61178)

 chrono/api/urls.py      |  4 ++--
 chrono/api/views.py     | 30 +++++++++++++++++++-----------
 tests/api/test_event.py |  2 ++
 3 files changed, 23 insertions(+), 13 deletions(-)
chrono/api/urls.py
44 44
    url(
45 45
        r'^agenda/(?P<agenda_identifier>[\w-]+)/event/$',
46 46
        views.events,
47
        name='api-event',
47
        name='api-events',
48 48
    ),
49 49
    url(
50 50
        r'^agenda/(?P<agenda_identifier>[\w-]+)/event/(?P<event_identifier>[\w:-]+)/$',
51
        views.events,
51
        views.event,
52 52
        name='api-event',
53 53
    ),
54 54
    url(
chrono/api/views.py
2226 2226
resize_booking = ResizeBooking.as_view()
2227 2227

  
2228 2228

  
2229
class Events(APIView):
2229
class EventsAPI(APIView):
2230 2230
    permission_classes = (permissions.IsAuthenticated,)
2231 2231
    serializer_class = serializers.EventSerializer
2232 2232

  
2233
    def get_object(self, agenda_identifier, event_identifier):
2234
        agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
2235
        if ':' in event_identifier:
2236
            return get_event_recurrence(agenda, event_identifier)
2237
        try:
2238
            return agenda.event_set.get(slug=event_identifier)
2239
        except Event.DoesNotExist:
2240
            raise Http404()
2241

  
2242 2233
    def post(self, request, agenda_identifier):
2243 2234
        agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
2244 2235

  
......
2251 2242
            event.create_all_recurrences()
2252 2243
        return Response({'err': 0, 'data': get_event_detail(request, event)})
2253 2244

  
2245

  
2246
events = EventsAPI.as_view()
2247

  
2248

  
2249
class EventAPI(APIView):
2250
    permission_classes = (permissions.IsAuthenticated,)
2251
    serializer_class = serializers.EventSerializer
2252

  
2253
    def get_object(self, agenda_identifier, event_identifier):
2254
        agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
2255
        if ':' in event_identifier:
2256
            return get_event_recurrence(agenda, event_identifier)
2257
        try:
2258
            return agenda.event_set.get(slug=event_identifier)
2259
        except Event.DoesNotExist:
2260
            raise Http404()
2261

  
2254 2262
    def patch(self, request, agenda_identifier=None, event_identifier=None, format=None):
2255 2263
        event = self.get_object(agenda_identifier, event_identifier)
2256 2264
        serializer = self.serializer_class(event, data=request.data, partial=True)
......
2310 2318
        return Response({'err': 0})
2311 2319

  
2312 2320

  
2313
events = Events.as_view()
2321
event = EventAPI.as_view()
2314 2322

  
2315 2323

  
2316 2324
class EventStatus(APIView):
tests/api/test_event.py
337 337
        '2021-12-18',
338 338
    ]
339 339

  
340
    app.delete('/api/agenda/%s/event/' % agenda.slug, status=405)  # forbidden
341

  
340 342

  
341 343
@pytest.mark.freeze_time('2021-11-01')
342 344
def test_update_event(app, user):
343
-