api: move post event api from add-event/ to event/ endpoint (#57547)
This commit is contained in:
parent
030a355ebf
commit
3719bb7db4
|
@ -49,6 +49,11 @@ urlpatterns = [
|
|||
views.recurring_fillslots,
|
||||
name='api-recurring-fillslots',
|
||||
),
|
||||
url(
|
||||
r'^agenda/(?P<agenda_identifier>[\w-]+)/event/$',
|
||||
views.events,
|
||||
name='api-event',
|
||||
),
|
||||
url(
|
||||
r'^agenda/(?P<agenda_identifier>[\w-]+)/event/(?P<event_identifier>[\w:-]+)/$',
|
||||
views.events,
|
||||
|
@ -69,11 +74,6 @@ urlpatterns = [
|
|||
views.event_check,
|
||||
name='api-event-check',
|
||||
),
|
||||
url(
|
||||
r'^agenda/(?P<agenda_identifier>[\w-]+)/add-event/$',
|
||||
views.agenda_add_event,
|
||||
name='api-agenda-add-event',
|
||||
),
|
||||
url(
|
||||
r'^agenda/meetings/(?P<meeting_identifier>[\w-]+)/datetimes/$',
|
||||
views.meeting_datetimes,
|
||||
|
|
|
@ -2216,6 +2216,23 @@ class Events(APIView):
|
|||
except Event.DoesNotExist:
|
||||
raise Http404()
|
||||
|
||||
def post(self, request, agenda_identifier):
|
||||
agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
|
||||
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
raise APIError(
|
||||
_('invalid payload'),
|
||||
err_class='invalid payload',
|
||||
errors=serializer.errors,
|
||||
http_status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
payload = serializer.validated_data
|
||||
event = Event.objects.create(agenda=agenda, **payload)
|
||||
if event.recurrence_days and event.recurrence_end_date:
|
||||
event.create_all_recurrences()
|
||||
return Response({'err': 0, 'data': get_event_detail(request, event)})
|
||||
|
||||
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)
|
||||
|
@ -2534,28 +2551,3 @@ class BookingsStatistics(APIView):
|
|||
|
||||
|
||||
bookings_statistics = BookingsStatistics.as_view()
|
||||
|
||||
|
||||
class AgendaAddEventView(APIView):
|
||||
permission_classes = (permissions.IsAuthenticated,)
|
||||
serializer_class = serializers.EventSerializer
|
||||
|
||||
def post(self, request, agenda_identifier):
|
||||
agenda = get_object_or_404(Agenda, slug=agenda_identifier, kind='events')
|
||||
|
||||
serializer = self.serializer_class(data=request.data)
|
||||
if not serializer.is_valid():
|
||||
raise APIError(
|
||||
_('invalid payload'),
|
||||
err_class='invalid payload',
|
||||
errors=serializer.errors,
|
||||
http_status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
payload = serializer.validated_data
|
||||
event = Event.objects.create(agenda=agenda, **payload)
|
||||
if event.recurrence_days and event.recurrence_end_date:
|
||||
event.create_all_recurrences()
|
||||
return Response({'err': 0, 'data': get_event_detail(request, event)})
|
||||
|
||||
|
||||
agenda_add_event = AgendaAddEventView.as_view()
|
||||
|
|
|
@ -161,7 +161,7 @@ def test_event_checked(app, user):
|
|||
|
||||
|
||||
def test_add_event(app, user):
|
||||
api_url = '/api/agenda/%s/add-event/' % ('999')
|
||||
api_url = '/api/agenda/%s/event/' % ('999')
|
||||
|
||||
# no authentication
|
||||
resp = app.post(api_url, status=401)
|
||||
|
@ -181,14 +181,14 @@ def test_add_event(app, user):
|
|||
# using meeting agenda
|
||||
meeting_agenda = Agenda(label='Foo bar Meeting', kind='meetings')
|
||||
meeting_agenda.save()
|
||||
api_url = '/api/agenda/%s/add-event/' % (meeting_agenda.slug)
|
||||
api_url = '/api/agenda/%s/event/' % (meeting_agenda.slug)
|
||||
resp = app.post(api_url, status=404)
|
||||
assert resp.json['detail'] == 'Not found.'
|
||||
|
||||
agenda = Agenda(label='Foo bar')
|
||||
agenda.maximal_booking_delay = 0
|
||||
agenda.save()
|
||||
api_url = '/api/agenda/%s/add-event/' % (agenda.slug)
|
||||
api_url = '/api/agenda/%s/event/' % (agenda.slug)
|
||||
|
||||
# missing fields
|
||||
resp = app.post(api_url, status=400)
|
||||
|
|
Loading…
Reference in New Issue