Initial commit
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user