Category Api lari tayyor

This commit is contained in:
2025-11-24 15:57:46 +05:00
parent b0ad0ea173
commit 37a16900f7
17 changed files with 199 additions and 14 deletions

View File

@@ -0,0 +1 @@
from .category import * # noqa

View File

@@ -0,0 +1 @@
from .category import * # noqa

View File

@@ -0,0 +1,45 @@
from rest_framework.permissions import AllowAny
from rest_framework.viewsets import ReadOnlyModelViewSet
from django_core.mixins.base import BaseViewSetMixin
from drf_spectacular.utils import extend_schema
from core.apps.api.models import Category
from django_filters.rest_framework import DjangoFilterBackend
from core.apps.api.filters.category import CategoryFilter
from core.apps.api.serializers.category import (
ListCategorySerializer,
RetrieveCategorySerializer,
CreateCategorySerializer,
ListCategoryNoChildSerializer,
)
@extend_schema(tags=["Category"])
class CategoryViewSet(BaseViewSetMixin, ReadOnlyModelViewSet):
permission_classes = [AllowAny]
serializer_class = ListCategorySerializer
pagination_class = None
filter_backends = [DjangoFilterBackend]
filterset_class = CategoryFilter
action_permission_classes = {}
action_serializer_class = {
"list": ListCategorySerializer,
"retrieve": RetrieveCategorySerializer,
"create": CreateCategorySerializer,
}
def get_queryset(self):
qs = Category.objects.all()
if not self.request.query_params:
qs = qs.filter(level=0)
return qs
def get_serializer_class(self):
if "show_home" in self.request.query_params:
return ListCategoryNoChildSerializer
if hasattr(self, 'action_serializer_class'):
return self.action_serializer_class.get(self.action, self.serializer_class)
return super().get_serializer_class()