def post(self, request, pk): customer = self.get_object(pk) serializer = CustomerSerializer(customer, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request): quotes = self.get_queryset() full_quote_data = build_quotes_and_related_data(quotes) if quotes.first(): full_quote_data['quoteId'] = quotes.first().id quote_customers = quotes.values_list('customer__id', flat=True) customers = Customer.objects.filter(id__in=quote_customers) customer_serializer = CustomerSerializer(customers, many=True) full_quote_data['customers'] = customer_serializer.data else: return Response(status=status.HTTP_204_NO_CONTENT) return Response(full_quote_data)
def test_add_duplicate_customer_fails(self): serializer = CustomerSerializer(data={ 'first_name': 'bod', 'last_name': 'prince' }) self.assertEqual(serializer.is_valid(), False) serializer = CustomerSerializer(data={ 'first_name': 'Fred', 'last_name': 'Bloggs', 'email': '*****@*****.**' }) self.assertEqual(serializer.is_valid(), False)
def test_not_duplicate_when_id(self): serializer = CustomerSerializer( data={ 'id': self.customer_no_email.id, 'first_name': self.customer_no_email.first_name, 'last_name': self.customer_no_email.last_name }) self.assertEqual(serializer.is_valid(), False) serializer = CustomerSerializer( data={ 'id': self.customer_with_email.id, 'first_name': self.customer_with_email.first_name, 'last_name': self.customer_with_email.last_name, 'email': self.customer_with_email.email }) self.assertEqual(serializer.is_valid(), False)
def get(self, request, pk): customer = self.get_object(pk) serializer = CustomerSerializer(customer) note_list = CustomerNote.objects.filter(customer=customer) quote_list = Quote.objects.filter(customer=customer) quote_bike_ids = quote_list.values_list('bike__id', flat=True) bikes = Bike.objects.filter(id__in=quote_bike_ids) bike_serializer = BikeSerializer(bikes, many=True) bike_frame_ids = bikes.values_list('frame__id', flat=True) frames = Frame.objects.filter(id__in=bike_frame_ids) frame_serializer = FrameSerializer(frames, many=True) return Response({ 'customer': serializer.data, 'notes': CustomerNoteSerializer(note_list, many=True).data, 'quotes': QuoteSerializer(quote_list, many=True).data, 'frames': frame_serializer.data, 'bikes': bike_serializer.data })
def test_missing_data_customer_create(self): serializer = CustomerSerializer(data={}) self.assertEqual(serializer.is_valid(), False) serializer = CustomerSerializer(data={'first_name': 'Annd'}) self.assertEqual(serializer.is_valid(), False) serializer = CustomerSerializer(data={'last_name': 'Annd'}) self.assertEqual(serializer.is_valid(), False) serializer = CustomerSerializer(data={'last_name': ''}) self.assertEqual(serializer.is_valid(), False)
def post(self, request): serializer = CustomerSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)