Merge pull request 'Home page uchun yangi category api lar chiqarildi' (#5) from fix/category into main

Reviewed-on: #5
This commit is contained in:
2025-11-26 06:50:52 +00:00
2 changed files with 17 additions and 14 deletions

View File

@@ -1,10 +1,11 @@
from django.urls import include, path from django.urls import include, path
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from core.apps.api.views import CategoryViewSet, SearchHistoryViewSet, HomeAdApiView from core.apps.api.views import CategoryViewSet, SearchHistoryViewSet, HomeAdApiView, CategoryHomeApiViewSet
router = DefaultRouter() router = DefaultRouter()
router.register("category", CategoryViewSet, basename="category") router.register("category", CategoryViewSet, basename="category")
router.register("category-home-api", CategoryHomeApiViewSet, basename="category-home-api")
router.register("search-history", SearchHistoryViewSet, basename="search-history") router.register("search-history", SearchHistoryViewSet, basename="search-history")
router.register("home-ad", HomeAdApiView, basename="home-ad") router.register("home-ad", HomeAdApiView, basename="home-ad")
urlpatterns = [path("", include(router.urls))] urlpatterns = [path("", include(router.urls))]

View File

@@ -15,6 +15,7 @@ from core.apps.api.serializers.category import (
@extend_schema(tags=["Category"]) @extend_schema(tags=["Category"])
class CategoryViewSet(BaseViewSetMixin, ReadOnlyModelViewSet): class CategoryViewSet(BaseViewSetMixin, ReadOnlyModelViewSet):
queryset = Category.objects.filter(level=0)
permission_classes = [AllowAny] permission_classes = [AllowAny]
serializer_class = ListCategorySerializer serializer_class = ListCategorySerializer
pagination_class = None pagination_class = None
@@ -28,18 +29,19 @@ class CategoryViewSet(BaseViewSetMixin, ReadOnlyModelViewSet):
"create": CreateCategorySerializer, "create": CreateCategorySerializer,
} }
def get_queryset(self):
qs = Category.objects.all()
if not self.request.query_params: @extend_schema(tags=["Category"])
qs = qs.filter(level=0) class CategoryHomeApiViewSet(BaseViewSetMixin, ReadOnlyModelViewSet):
return qs queryset = Category.objects.all()
permission_classes = [AllowAny]
serializer_class = ListCategoryNoChildSerializer
pagination_class = None
filter_backends = [DjangoFilterBackend]
filterset_class = CategoryFilter
def get_serializer_class(self): action_permission_classes = {}
if "show_home" in self.request.query_params: action_serializer_class = {
return ListCategoryNoChildSerializer "list": ListCategoryNoChildSerializer,
"retrieve": RetrieveCategorySerializer,
if hasattr(self, 'action_serializer_class'): "create": CreateCategorySerializer,
return self.action_serializer_class.get(self.action, self.serializer_class) }
return super().get_serializer_class()