41 lines
1.3 KiB
Python
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,
|
|
}
|