From 97957337b6b28d29af614f15f5a5b7dfe30c26c2 Mon Sep 17 00:00:00 2001 From: manuconcepbrito <manu041196@gmail.com> Date: Wed, 6 Oct 2021 22:10:44 +0200 Subject: [PATCH] backbone for adding sessions --- wahlfang_api/serializers.py | 1 + wahlfang_api/urls.py | 2 ++ wahlfang_api/views.py | 20 ++++++++++++++++++- .../src/pages/management/AddSession.js | 16 +++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/wahlfang_api/serializers.py b/wahlfang_api/serializers.py index c3cafc9..5104492 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 08aa32d..3d04b19 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 bde55ee..c49f872 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 e69de29..3c53d5e 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 -- GitLab