Category Api lari tayyor
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from .category import * # noqa
|
||||
|
||||
1
core/apps/api/views/category/__init__.py
Normal file
1
core/apps/api/views/category/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .category import * # noqa
|
||||
45
core/apps/api/views/category/category.py
Normal file
45
core/apps/api/views/category/category.py
Normal 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()
|
||||
Reference in New Issue
Block a user