from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework.viewsets import ReadOnlyModelViewSet from drf_spectacular.utils import extend_schema, extend_schema_view from django_core.mixins import BaseViewSetMixin from core.apps.api.models import BannerModel from core.apps.api.serializers.banner import ( ListBannerSerializer, RetrieveBannerSerializer, CreateBannerSerializer, ) @extend_schema_view( list=extend_schema( summary="List all active banners", description="Get list of all active banners ordered by display order", tags=["Banners"] ), retrieve=extend_schema( summary="Get banner details", description="Get detailed information about a specific banner", tags=["Banners"] ), ) class BannerViewSet(BaseViewSetMixin, ReadOnlyModelViewSet): """ ViewSet for managing banners. Returns active banners for display on website. """ queryset = BannerModel.objects.filter(is_active=True).order_by("order", "-created_at") serializer_class = ListBannerSerializer permission_classes = [AllowAny] action_serializer_class = { "list": ListBannerSerializer, "retrieve": RetrieveBannerSerializer, "create": CreateBannerSerializer, }