Skip to content
Snippets Groups Projects
views.py 1.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • Bodor Máté's avatar
    Bodor Máté committed
    from rest_framework import viewsets
    
    Bodor Máté's avatar
    Bodor Máté committed
    from . import serializers
    from . import models
    
    Bodor Máté's avatar
    Bodor Máté committed
    from common import permissions
    
    Bodor Máté's avatar
    Bodor Máté committed
    
    
    class TasksViewSet(viewsets.ModelViewSet):
        serializer_class = serializers.TaskSerializer
        queryset = models.Task.objects.all()
    
    Rafael László's avatar
    Rafael László committed
        permission_classes = (
            permissions.IsStaffOrReadOnlyForAuthenticated,
            permissions.IsStaffOrStudent,
        )
    
    
        def perform_create(self, serializer):
            kwargs = {
                'created_by': self.request.user.profile
            }
    
    Rafael László's avatar
    Rafael László committed
    
    
            serializer.save(**kwargs)
    
    
    Bodor Máté's avatar
    Bodor Máté committed
    
    
    class SolutionsViewSet(viewsets.ModelViewSet):
    
        serializer_class = serializers.SolutionSerializer_Student
    
        permission_classes = (permissions.IsStaffOrStudent, )
    
    Bodor Mate's avatar
    Bodor Mate committed
    
    
        def get_serializer_class(self):
            user = self.request.user
            if user.profile.role == 'Staff':
                return serializers.SolutionSerializer_Staff
            return serializers.SolutionSerializer_Student
    
    
    Bodor Mate's avatar
    Bodor Mate committed
        def get_queryset(self):
            user = self.request.user
    
            queryset = models.Solution.objects.filter(created_by=user.profile)
    
    Bodor Máté's avatar
    Bodor Máté committed
            if user.profile.role == 'Staff':
    
    Bodor Mate's avatar
    Bodor Mate committed
                queryset = models.Solution.objects.all()
    
                profile_id = self.request.query_params.get('profileID', None)
                if profile_id is not None:
                    queryset = queryset.filter(created_by=profile_id)
    
    Bodor Mate's avatar
    Bodor Mate committed
            return queryset
    
    Rafael László's avatar
    Rafael László committed
    
    
        def perform_create(self, serializer):
            kwargs = {
                'created_by': self.request.user.profile
            }
    
    Rafael László's avatar
    Rafael László committed
    
    
            serializer.save(**kwargs)