All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 31s
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
from rest_framework import generics, permissions
|
|
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
from .models import Category, Product
|
|
from .serializers import CategorySerializer, ProductSerializer
|
|
from django.db.models import Q
|
|
|
|
class CategoryListView(generics.ListAPIView):
|
|
queryset = Category.objects.filter(is_active=True)
|
|
serializer_class = CategorySerializer
|
|
permission_classes = [permissions.AllowAny]
|
|
|
|
class ProductListView(generics.ListAPIView):
|
|
serializer_class = ProductSerializer
|
|
permission_classes = [permissions.AllowAny]
|
|
|
|
def get_queryset(self):
|
|
queryset = Product.objects.filter(is_active=True)
|
|
category_slug = self.request.query_params.get('category', None)
|
|
search_query = self.request.query_params.get('search', None)
|
|
|
|
if category_slug:
|
|
queryset = queryset.filter(category__slug=category_slug)
|
|
if search_query:
|
|
queryset = queryset.filter(
|
|
Q(title__icontains=search_query) |
|
|
Q(description__icontains=search_query)
|
|
)
|
|
return queryset
|
|
|
|
class ProductDetailView(generics.RetrieveAPIView):
|
|
queryset = Product.objects.filter(is_active=True)
|
|
serializer_class = ProductSerializer
|
|
permission_classes = [permissions.AllowAny]
|