from django.db.models import Q from rest_framework.authentication import TokenAuthentication from rest_framework.parsers import FormParser, JSONParser, MultiPartParser from rest_framework.permissions import IsAuthenticated from rest_framework.viewsets import ModelViewSet from apps.account.permissions import IsSuperAdmin from utils.pagination import StandardResultsSetPagination from .models import Video from .serializers_admin import AdminVideoDetailSerializer, AdminVideoListSerializer class AdminVideoViewSet(ModelViewSet): permission_classes = [IsAuthenticated, IsSuperAdmin] authentication_classes = [TokenAuthentication] pagination_class = StandardResultsSetPagination parser_classes = (MultiPartParser, FormParser, JSONParser) def get_serializer_class(self): if self.action == "list": return AdminVideoListSerializer return AdminVideoDetailSerializer def get_queryset(self): queryset = Video.objects.all() search_query = self.request.query_params.get("search") if search_query: queryset = queryset.filter( Q(title__icontains=search_query) | Q(slug__icontains=search_query) | Q(description__icontains=search_query) | Q(video_url__icontains=search_query) ) status_filter = self.request.query_params.get("status") if status_filter in {"true", "false"}: queryset = queryset.filter(status=status_filter == "true") video_type = self.request.query_params.get("video_type") if video_type and video_type != "all": queryset = queryset.filter(video_type=video_type) return queryset.order_by("-created_at")