from rest_framework.generics import ListAPIView, RetrieveAPIView
from rest_framework.response import Response
from rest_framework.exceptions import NotFound
from rest_framework.permissions import IsAuthenticated

from apps.archive.models import CreatorModel

from .serializers import (
    CreatorListSerializer,
    CreatorDetailsSerializer,
)


class CreatorListView(ListAPIView):
    permission_classes = [IsAuthenticated]
    serializer_class = CreatorListSerializer

    def get_queryset(self):
        user = self.request.user.userprofile

        if user.show_mature:
            return CreatorModel.objects.all()
        else:
            return CreatorModel.objects.filter(mature=False)


class CreatorDetailsView(RetrieveAPIView):
    permission_classes = [IsAuthenticated]
    serializer_class = CreatorDetailsSerializer
    lookup_field = "creator_id"

    def get_queryset(self):
        user = self.request.user.userprofile

        if user.show_mature:
            return CreatorModel.objects.all()
        else:
            return CreatorModel.objects.filter(mature=False)