Files
backend/core/apps/api/views/banner/banner.py
A'zamov Samandar f5766aa319 update
2025-12-06 21:50:28 +05:00

41 lines
1.3 KiB
Python

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,
}