From 8705be76745400df6cfe05fe8626df3ce1926a46 Mon Sep 17 00:00:00 2001 From: Manuel <manu041196@gmail.com> Date: Sun, 14 Nov 2021 17:42:50 +0100 Subject: [PATCH] View to deal with voters within a Session --- wahlfang_api/serializers.py | 1 - wahlfang_api/urls.py | 4 +++- wahlfang_api/views.py | 16 +++++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/wahlfang_api/serializers.py b/wahlfang_api/serializers.py index fb18556..dbc6603 100644 --- a/wahlfang_api/serializers.py +++ b/wahlfang_api/serializers.py @@ -147,4 +147,3 @@ 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 76cb857..1c0f33f 100644 --- a/wahlfang_api/urls.py +++ b/wahlfang_api/urls.py @@ -12,7 +12,8 @@ from wahlfang_api.views import ( VoterInfoView, SpectatorView, ManagerSessionView, - ManagerElectionView + ManagerElectionView, + ManagerSessionVoterView ) app_name = 'rest_api' @@ -30,5 +31,6 @@ urlpatterns = [ path('auth/token/verify/', TokenVerifyView.as_view(), name='token_verify'), path('manager/add-session', ManagerSessionView.as_view(), name='add_session'), path('manager/election', ManagerElectionView.as_view(), name='manage_elections'), + path('manager/session/<int:pk>/voters', ManagerSessionVoterView.as_view(), name='manage_voters'), path('drf/', include('rest_framework.urls', namespace='rest_framework')) ] diff --git a/wahlfang_api/views.py b/wahlfang_api/views.py index a8184c0..e9bcc4f 100644 --- a/wahlfang_api/views.py +++ b/wahlfang_api/views.py @@ -58,8 +58,8 @@ class SpectatorView(generics.RetrieveAPIView): def get_object(self): return self.queryset.get(spectator_token=self.kwargs['uuid']) -## Management Sessions ## +# Management Sessions # class ManagerSessionView(generics.ListCreateAPIView, generics.DestroyAPIView): authentication_classes = [ElectionManagerJWTAuthentication] @@ -67,6 +67,7 @@ class ManagerSessionView(generics.ListCreateAPIView, generics.DestroyAPIView): serializer_class = SessionSerializer def get_object(self): + # TODO: Replace query parameter with correct REST guideline /:pk session = get_object_or_404(Session, pk=self.request.query_params.get('pk')) return session @@ -106,6 +107,19 @@ class ManagerElectionView(generics.ListCreateAPIView, generics.DestroyAPIView): return Response(status=status.HTTP_204_NO_CONTENT) +class ManagerSessionVoterView(generics.ListCreateAPIView, generics.DestroyAPIView): + """ + Deals with Voters within a session + """ + authentication_classes = [ElectionManagerJWTAuthentication] + permission_classes = [IsElectionManager] + serializer_class = VoterDetailSerializer + + def get_queryset(self): + session = get_object_or_404(Session, pk=self.kwargs['pk']) + return session.participants + + class ElectionViewset(viewsets.ReadOnlyModelViewSet): authentication_classes = [VoterJWTAuthentication] queryset = Election.objects.all() -- GitLab