All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 18s
54 lines
2.3 KiB
Python
54 lines
2.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):
|
|
# Fetch approved supplier IDs from sellerprofile database
|
|
from django.db import connections
|
|
approved_supplier_ids = []
|
|
try:
|
|
with connections['sellerprofile'].cursor() as cursor:
|
|
cursor.execute("SELECT user_id FROM api_supplierprofile WHERE status = 'approved'")
|
|
approved_supplier_ids = [row[0] for row in cursor.fetchall()]
|
|
except Exception as e:
|
|
print("Error fetching approved suppliers:", e)
|
|
|
|
queryset = Product.objects.filter(supplier_id__in=approved_supplier_ids, status='approved', 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):
|
|
serializer_class = ProductSerializer
|
|
permission_classes = [permissions.AllowAny]
|
|
|
|
def get_queryset(self):
|
|
from django.db import connections
|
|
approved_supplier_ids = []
|
|
try:
|
|
with connections['sellerprofile'].cursor() as cursor:
|
|
cursor.execute("SELECT user_id FROM api_supplierprofile WHERE status = 'approved'")
|
|
approved_supplier_ids = [row[0] for row in cursor.fetchall()]
|
|
except Exception as e:
|
|
print("Error fetching approved suppliers:", e)
|
|
return Product.objects.filter(supplier_id__in=approved_supplier_ids, status='approved', is_active=True)
|