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