from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.response import Response
from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
from django.views.decorators.vary import vary_on_headers
from django.core.cache import cache
from ..models import {{ model_name }}
from ..serializers.{{ model_name|lower }}_serializers import (
    {{ model_list_serializers }},
    {{ model_retrieve_serializers }},
    {{ model_write_serializers }}
)
from ..utilities.importbase import MyPageNumberPagination, {{ app_name }}Permission
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework_simplejwt.authentication import JWTAuthentication

class {{ viewset_name }}(viewsets.ModelViewSet):
    queryset = {{ model_name }}.objects.all().order_by('-id')
    serializer_class = {{ model_list_serializers }}
    pagination_class = MyPageNumberPagination
    permission_classes = [{{ app_name }}Permission]
    authentication_classes = [JWTAuthentication]
    filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
    filterset_fields = '__all__'
    search_fields = []
    ordering_fields = '__all__'

    def get_serializer_class(self):
        if self.action == 'list':
            return {{ model_list_serializers }}
        if self.action == 'retrieve':
            return {{ model_retrieve_serializers }}
        return {{ model_write_serializers }}

    def get_queryset(self):
        queryset = super().get_queryset()
        return queryset