示例#1
0
 def update_vehicle(self, request, pk):
     """
         /api/users/<user_id>/vehicles/<vehicle_id>
             PUT - Update vehicle information
     """
     serializer = VehicleUpdateSerializer(data=request.data)
     if serializer.is_valid():
         try:
             vehicle = Vehicle.objects.get(plate=request.data['plate'])
         except Exception as e:
             return Response(
                 {
                     'response':
                     "Vehicle with the associated\
                                           plate doesn't exists"
                 },
                 status=404)
         if request.data.get('new_plate'):
             vehicle.plate = request.data.get('new_plate')
         if serializer.data.get('model'):
             vehicle.model = serializer.data.get('model')
         if serializer.data.get('color'):
             vehicle.color = serializer.data.get('color')
         if serializer.data.get('brand'):
             vehicle.brand = serializer.data.get('brand')
         vehicle.save()
         return Response({
             'response': 'Vehicle information \
                                       updated successfully',
             'vehicle': VehicleSerializer(vehicle).data
         })
     return Response(serializer.errors)
示例#2
0
 def test_get_all_vehicles(self):
     # get API response
     response = client.get(reverse('get-vehicle-list'))
     # get data from db
     vehicles = Vehicle.objects.all()
     serializer = VehicleSerializer(vehicles, many=True)
     self.assertEqual(response.data, serializer.data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
示例#3
0
def vehicle_detail(request, pk, format=None):
    """
    Retrieve, update or delete a vehicle.
    """
    try:
        vehicle = Vehicle.objects.get(pk=pk)
    except Vehicle.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        serializer = VehicleSerializer(vehicle)
        return Response(serializer.data)

    elif request.method == 'PUT':
        serializer = VehicleSerializer(vehicle, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        vehicle.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

    elif request.method == 'POST':
        return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
示例#4
0
 def test_get_valid_single_vehicle(self):
     """ Check validity of each single vehicle in the list """
     for vehicle in self.valid_vehicle_list:
         response = client.get(
             reverse('get-vehicle-detail', kwargs={'pk': vehicle.pk}))
         # response = client.get('get-vehicle-detail/1234')
         vehicle_obj = Vehicle.objects.get(pk=vehicle.pk)
         serializer = VehicleSerializer(vehicle_obj)
         self.assertEqual(response.data, serializer.data)
         self.assertEqual(response.status_code, status.HTTP_200_OK)
示例#5
0
 def create_vehicle(self, request, pk):
     """
         /api/users/<user_id>/vehicles
             POST - Create a new vehicle
     """
     user = self.get_object()
     serializer = VehicleSerializer(data=request.data)
     if serializer.is_valid():
         new_vehicle = Vehicle(plate=serializer.data['plate'],
                               model=serializer.data['model'],
                               color=serializer.data['color'],
                               brand=serializer.data['brand'],
                               user=user)
         new_vehicle.save()
         return Response(
             {
                 'response': 'Vehicle registered successfully',
                 'vehicle': VehicleSerializer(new_vehicle).data
             },
             status=201)
     return Response(serializer.errors, status=400)
示例#6
0
def listing(request):
    doctors = Person.objects.filter(title='Dr.')
    vehicles = Vehicle.objects.all()

    context = {
        'request': request,
    }
    vehicles_serializer = VehicleSerializer(vehicles, many=True, context=context)

    results = {
        'doctors': PersonSerializer(doctors, many=True).data,
        'vehicles': vehicles_serializer.data,
    }
    return Response(results)
示例#7
0
def vehicle_list(request, format=None):
    """
    List all vehicles, or create a new one.
    """
    if request.method == 'GET':
        vehicles = Vehicle.objects.all()
        serializer = VehicleSerializer(vehicles, many=True)
        return Response(serializer.data)

    elif request.method == 'POST':
        serializer = VehicleSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例#8
0
class TripSerializer(serializers.HyperlinkedModelSerializer):
    origin_id = serializers.PrimaryKeyRelatedField(
        queryset=Place.objects.all(), source='origin', write_only=True)

    origin = PlaceSerializer(read_only=True)

    destination_id = serializers.PrimaryKeyRelatedField(
        queryset=Place.objects.all(), source='destination', write_only=True)
    destination = PlaceSerializer(read_only=True)

    vehicle_id = UserFilteredPrimaryKeyRelatedField(queryset=Vehicle.objects,
                                                    source='vehicle',
                                                    write_only=True)

    vehicle = VehicleSerializer(read_only=True)

    driver = UserSerializer(source='user', read_only=True)

    def validate_trip_date(self, value):
        if value < date.today():
            raise serializers.ValidationError(
                'Trip date cannot be in the past')
        return value

    def validate(self, data):
        if data['origin'] == data['destination']:
            raise serializers.ValidationError(
                'Origin and destination cannot be the same')

        return data

    class Meta:
        model = Trip
        fields = [
            'id',
            'url',
            'trip_date',
            'num_seats',
            'origin_id',
            'origin',
            'destination_id',
            'destination',
            'vehicle_id',
            'vehicle',
            'driver',
        ]
示例#9
0
def vehicle_detail(request, pk):
    vehicle = Vehicle.objects.get(pk=pk)
    if request.method == 'GET':
        try:
            serializer = VehicleSerializer(vehicle)
            print(serializer.data)
            return JsonResponse(serializer.data)
        except Vehicle.DoesNotExist:
            return HttpResponse('No enviaste un solicitante con valor valido.')
    elif request.method == 'PUT':
        data = JSONParser().parse(request)
        serializer = VehicleSerializer(vehicle, data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data)
        return JsonResponse(serializer.errors, status=400)
示例#10
0
 def vehicles(self, request, pk):
     """
         /api/users/<user_id>/vehicles
             GET - Return list of vehicles of a user
     """
     user = self.get_object()
     vehicles = Vehicle.objects.filter(user=user)
     serializer = VehicleSerializer(vehicles, many=True)
     if len(serializer.data):
         return Response({
             'response': 'Succesful request',
             'vehicles': serializer.data
         })
     else:
         return Response(
             {
                 'response':
                 "User doesn't have\
                          any vehicle registered"
             },
             status=404)