From 394bc284d2aa63f68e5ce31e829177174b66b9d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu> Date: Sat, 19 Jan 2019 16:30:40 +0100 Subject: [PATCH] Add query param to documents view --- src/document/views.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/document/views.py b/src/document/views.py index 6a80b18..4a81459 100644 --- a/src/document/views.py +++ b/src/document/views.py @@ -6,6 +6,32 @@ from . import serializers class DocumentViewSet(viewsets.ModelViewSet): - queryset = models.Document.objects.all() serializer_class = serializers.DocumentSerializer permission_classes = (permissions.IsStaffOrStudent, ) + + def get_queryset(self): + user = self.request.user + if user.profile.role == 'Staff': + queryset = self.staff_queryset() + else: + queryset = self.student_queryset(user.profile) + return queryset + + def staff_queryset(self): + queryset = models.Document.objects.all() + profile_id = self.request.query_params.get('profileID', None) + solution_id = self.request.query_params.get('solutionID', None) + if profile_id is not None and solution_id is not None: + return queryset.filter(uploaded_by=profile_id, solution=solution_id) + if profile_id is not None: + return queryset.filter(uploaded_by=profile_id) + if solution_id is not None: + return queryset.filter(solution=solution_id) + return queryset + + def student_queryset(self, profile): + queryset = models.Document.objects.filter(uploaded_by=profile) + solution_id = self.request.query_params.get('solutionID', None) + if solution_id is not None: + return queryset.filter(solution=solution_id) + return queryset -- GitLab