Files
2026-02-27 15:01:06 +03:00

58 lines
1.8 KiB
Python

from django.db.models import Q
from rest_framework import generics, permissions, viewsets
from apps.salons.models import Review, Salon, Service, StaffProfile
from apps.salons.serializers import (
ReviewSerializer,
SalonDetailSerializer,
SalonSerializer,
ServiceSerializer,
StaffSerializer,
)
class SalonViewSet(viewsets.ReadOnlyModelViewSet):
permission_classes = [permissions.AllowAny]
def get_queryset(self):
queryset = Salon.objects.all()
city = self.request.query_params.get("city")
query = self.request.query_params.get("q")
service = self.request.query_params.get("service")
if city:
queryset = queryset.filter(city__iexact=city)
if query:
queryset = queryset.filter(Q(name__icontains=query) | Q(description__icontains=query))
if service:
queryset = queryset.filter(services__name__icontains=service)
return queryset.distinct()
def get_serializer_class(self):
if self.action == "retrieve":
return SalonDetailSerializer
return SalonSerializer
class SalonServicesView(generics.ListAPIView):
serializer_class = ServiceSerializer
permission_classes = [permissions.AllowAny]
def get_queryset(self):
return Service.objects.filter(salon_id=self.kwargs["salon_id"], is_active=True)
class SalonStaffView(generics.ListAPIView):
serializer_class = StaffSerializer
permission_classes = [permissions.AllowAny]
def get_queryset(self):
return StaffProfile.objects.filter(salon_id=self.kwargs["salon_id"], is_active=True)
class SalonReviewsView(generics.ListAPIView):
serializer_class = ReviewSerializer
permission_classes = [permissions.AllowAny]
def get_queryset(self):
return Review.objects.filter(salon_id=self.kwargs["salon_id"]).order_by("-created_at")