diff --git a/wahlfang_api/serializers.py b/wahlfang_api/serializers.py index c3cafc9dc22d1f550172ed98e5c33eaf55ee7a2b..51044924c2a4f480cd3ef7f0aa1c90011780c650 100644 --- a/wahlfang_api/serializers.py +++ b/wahlfang_api/serializers.py @@ -121,3 +121,4 @@ class SpectatorSessionSerializer(serializers.ModelSerializer): class Meta: model = Session fields = ['title', 'meeting_link', 'elections'] + diff --git a/wahlfang_api/urls.py b/wahlfang_api/urls.py index 08aa32ddcb53682b27c3942f88d229f7536b7f09..3d04b19eac04d7b4bec174d69f33bfd6310b92e0 100644 --- a/wahlfang_api/urls.py +++ b/wahlfang_api/urls.py @@ -11,12 +11,14 @@ from wahlfang_api.views import ( ElectionViewset, VoterInfoView, SpectatorView, + ManagerSessionView ) app_name = 'rest_api' router = routers.SimpleRouter() router.register('vote/elections', ElectionViewset) +router.register('management/add-session', ManagerSessionView) urlpatterns = [ path('', include(router.urls)), diff --git a/wahlfang_api/views.py b/wahlfang_api/views.py index bde55eec1f329a77814afa92873578f84912c558..c49f872ede221894de136e2ed112b491450b08fd 100644 --- a/wahlfang_api/views.py +++ b/wahlfang_api/views.py @@ -7,6 +7,7 @@ from rest_framework.throttling import AnonRateThrottle from rest_framework_simplejwt.views import TokenViewBase from vote.forms import VoteForm +from management.forms import AddSessionForm from vote.models import Election, Voter, Application, Session from wahlfang_api.authentication import IsVoter from wahlfang_api.serializers import ( @@ -15,7 +16,8 @@ from wahlfang_api.serializers import ( ElectionSerializer, VoterDetailSerializer, EditApplicationSerializer, - SpectatorSessionSerializer + SpectatorSessionSerializer, + SessionSerializer ) @@ -54,6 +56,22 @@ class SpectatorView(generics.RetrieveAPIView): return self.queryset.get(spectator_token=self.kwargs['uuid']) +class ManagerSessionView(generics.RetrieveAPIView): + queryset = Session.objects.all() + + @action(detail=True, methods=['post']) + def create_session(self, request): + user = self.request.user.pk + + form = AddSessionForm(request, user, data=request.data) + if form.is_valid(): + form.save() + return Response(status=status.HTTP_204_NO_CONTENT) + + return Response(data=form.errors, status=status.HTTP_400_BAD_REQUEST) + + + class ElectionViewset(viewsets.ReadOnlyModelViewSet): queryset = Election.objects.all() permission_classes = [IsVoter] diff --git a/wahlfang_web/src/pages/management/AddSession.js b/wahlfang_web/src/pages/management/AddSession.js index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3c53d5e105417af987d4098f0746416782dc3afa 100644 --- a/wahlfang_web/src/pages/management/AddSession.js +++ b/wahlfang_web/src/pages/management/AddSession.js @@ -0,0 +1,16 @@ +import React from "react"; +import {useHistory, useParams} from "react-router-dom"; +import Layout from "../../components/Layout"; +import {useFormik} from "formik"; +import {useRecoilValue} from "recoil"; +import {performVote} from "../../api"; + + +export default function AddSession() { + const history = useHistory(); + + const formik = useFormik({ + onSubmit: values => { + // TO be defined is a function that calls the endpoint to create the session + }) +} \ No newline at end of file