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