from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from rest_framework.authentication import TokenAuthentication

from .models import *
from .serializers import *

from rest_framework.pagination import PageNumberPagination

class CustomPagination(PageNumberPagination):
    page_size = 1000
    page_size_query_param = 'page_size'
    max_page_size = 10000


### STAR SCHEMA ###

### DIMENSIONS ###

class dCorretoresViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dCorretores.objects.all()
    serializer_class = dCorretoresSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination

class dEtapasFunilViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dEtapasFunil.objects.all()
    serializer_class = dEtapasFunilSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination

class dMidiasViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dMidias.objects.all()
    serializer_class = dMidiasSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination

class dMotivosDePerdaViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dMotivosDePerda.objects.all()
    serializer_class = dMotivosDePerdaSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination

class dResponsaveisViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dResponsaveis.objects.all()
    serializer_class = dResponsaveisSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination

class dStatusViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dStatus.objects.all()
    serializer_class = dStatusSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination

class dUTMsViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = dUTMs.objects.all()
    serializer_class = dUTMsSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination


### FACTS ###

class fLeadsViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = fLeads.objects.all()
    serializer_class = fLeadsSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]
    search_fields = '__all__'
    ordering_fields = '__all__'
    pagination_class = CustomPagination
