from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework import status

from shop_management.views.data.pagination import CustomPagination


class DataRootViewSet(viewsets.ModelViewSet):
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())
        page_size = request.query_params.get("page_size")

        if page_size == "all" and self.pagination_class is not None:
            serializer = self.get_serializer(queryset, many=True)
            return CustomPagination.build_all_response(serializer.data)

        return super().list(request, *args, **kwargs)

    def destroy(self, request, *args, **kwargs):
        instance = self.get_object()
        if hasattr(instance, 'is_deleted'):
            instance.is_deleted = True
            instance.save()
            return Response(status=status.HTTP_204_NO_CONTENT)
        else:
            return super().destroy(request, *args, **kwargs)