Skip to content
Snippets Groups Projects
views.py 1.37 KiB
Newer Older
  • Learn to ignore specific revisions
  • from rest_framework import viewsets
    
    from common import permissions
    from . import models
    from . import serializers
    
    
    class DocumentViewSet(viewsets.ModelViewSet):
        serializer_class = serializers.DocumentSerializer
    
    Bodor Máté's avatar
    Bodor Máté committed
        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