def filter(request): if 'salon_name' in request.data: salon_name = request.data.pop('salon_name') service_name = request.data.pop('service_name') salon = models.Salon.objects.none() service = models.Service.objects.none() try: salon = models.Salon.objects.get(name=salon_name) service = models.Service.objects.get(name=service_name) except Exception: return Response({}, status=status.HTTP_404_NOT_FOUND) master_services = salon.salon_master_services.filter(service=service) masters = [] for ms in master_services: masters.append(ms.master) master_ser = serializers.MasterSerializer(masters, many=True) if masters and salon and master_ser: return Response(master_ser.data, status=status.HTTP_200_OK) return Response({}, status=status.HTTP_200_OK) elif 'time' in request.data: service_name = request.data.pop('service_name') time = request.data.pop('time') date = request.data.pop('date') service = models.Service.objects.none() try: service = models.Service.objects.get(name=service_name) except Exception: return Response({}, status=status.HTTP_404_NOT_FOUND) master_services = service.master_services.all() print(master_services) salons = [] for ms in master_services: for order in ms.order_price.all(): print(order) if order.date != date and order.time != time: salons.append(ms.salon) salons = set(salons) salon_ser = serializers.SalonSerializer(salons, many=True) if service and salons and salon_ser: return Response(salon_ser.data, status=status.HTTP_200_OK) return Response({}, status=status.HTTP_404_NOT_FOUND) elif 'master_name' in request.data: master_name = request.data.pop('master_name') masters = models.CustomUser.objects.get_masters( master_name=master_name) master_ser = serializers.MasterSerializer(masters, many=True) if masters: return Response(master_ser.data, status=status.HTTP_200_OK) return Response({}, status=status.HTTP_404_NOT_FOUND)
def post(self, request, *args, **kwargs): salon = models.Salon.objects.get(pk=self.kwargs[self.lookup_field]) name = request.data.get('name') service = models.Service(salon=salon, name=name) if service: service.save() data = {'salon': serializers.SalonSerializer(salon)} serializer = serializers.ServiceSerializer(service) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) return Response({'error': 'Invalid data'}, status=status.HTTP_400_BAD_REQUEST)