from rest_framework import viewsets

from common import permissions
from rest_framework.permissions import IsAuthenticated
from . import serializers
from . import models


class TasksViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.TaskSerializer
    queryset = models.Task.objects.all()
    permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, )


class SolutionsViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.SolutionSerializer
    permission_classes = (IsAuthenticated, )

    def get_queryset(self):
        user = self.request.user
        queryset = models.Solution.objects.filter(created_by=user)
        if user.has_perm(permissions.IsStaffUser):
            queryset = models.Solution.objects.all()
            user_id = self.request.query_params.get('userID', None)
            if user_id is not None:
                queryset = queryset.filter(created_by=user_id)
        return queryset