From 337aacb4d3cd0d2b06ba066d8a61fe7bf5a605a0 Mon Sep 17 00:00:00 2001 From: pawunder1992 Date: Fri, 15 May 2026 15:19:25 +0300 Subject: [PATCH 1/2] updated serializers.py and main.py --- car/migrations/0001_initial.py | 41 ++++++++++++++++++++++++++++++++++ car/serializers.py | 24 +++++++++++++++++++- main.py | 17 +++++++++++--- 3 files changed, 78 insertions(+), 4 deletions(-) create mode 100644 car/migrations/0001_initial.py diff --git a/car/migrations/0001_initial.py b/car/migrations/0001_initial.py new file mode 100644 index 00000000..d0d4b1e7 --- /dev/null +++ b/car/migrations/0001_initial.py @@ -0,0 +1,41 @@ +# Generated by Django 4.1 on 2026-05-15 12:12 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Car", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("manufacturer", models.CharField(max_length=64)), + ("model", models.CharField(max_length=64)), + ( + "horse_powers", + models.PositiveSmallIntegerField( + validators=[ + django.core.validators.MaxValueValidator(1914), + django.core.validators.MinValueValidator(1), + ] + ), + ), + ("is_broken", models.BooleanField()), + ("problem_description", models.TextField(blank=True, null=True)), + ], + ), + ] diff --git a/car/serializers.py b/car/serializers.py index 3026b2b3..a155f431 100644 --- a/car/serializers.py +++ b/car/serializers.py @@ -1,5 +1,27 @@ from rest_framework import serializers +from car.models import Car class CarSerializer(serializers.Serializer): - pass + id = serializers.IntegerField(read_only=True) + manufacturer = serializers.CharField(max_length=64) + model = serializers.CharField(max_length=64) + horse_powers = serializers.IntegerField( + min_value=1, + max_value=1914 + ) + is_broken = serializers.BooleanField() + problem_description = serializers.CharField(required=False) + + def create(self, validated_data): + return Car.objects.create(**validated_data) + + def update(self, instance, validated_data): + instance.id = validated_data.get("id", instance.id) + instance.manufacturer = validated_data.get("manufacturer", instance.manufacturer) + instance.model = validated_data.get("model", instance.model) + instance.horse_powers = validated_data.get("horse_powers", instance.horse_powers) + instance.is_broken = validated_data.get("is_broken", instance.is_broken) + instance.problem_description = validated_data.get("problem_description", instance.problem_description) + instance.save() + return instance diff --git a/main.py b/main.py index c8ff592b..2643a3f3 100644 --- a/main.py +++ b/main.py @@ -1,9 +1,20 @@ +import io + +from rest_framework.parsers import JSONParser +from rest_framework.renderers import JSONRenderer + from car.models import Car +from car.serializers import CarSerializer def serialize_car_object(car: Car) -> bytes: - pass - + serializer = CarSerializer(car) + return JSONRenderer().render(serializer.data) def deserialize_car_object(json: bytes) -> Car: - pass + stream = io.BytesIO(json) + data = JSONParser().parse(stream) + serializer = CarSerializer(data=data) + serializer.is_valid() + serializer.save() + return Car.objects.get(id=data["id"]) From 0325657501dc293456a242c6787ed614b7729f60 Mon Sep 17 00:00:00 2001 From: pawunder1992 Date: Fri, 15 May 2026 15:25:54 +0300 Subject: [PATCH 2/2] fixed problems with flake8 --- car/serializers.py | 16 ++++++++++++---- main.py | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/car/serializers.py b/car/serializers.py index a155f431..cceee0dd 100644 --- a/car/serializers.py +++ b/car/serializers.py @@ -18,10 +18,18 @@ def create(self, validated_data): def update(self, instance, validated_data): instance.id = validated_data.get("id", instance.id) - instance.manufacturer = validated_data.get("manufacturer", instance.manufacturer) + instance.manufacturer = validated_data.get( + "manufacturer", + instance.manufacturer) instance.model = validated_data.get("model", instance.model) - instance.horse_powers = validated_data.get("horse_powers", instance.horse_powers) - instance.is_broken = validated_data.get("is_broken", instance.is_broken) - instance.problem_description = validated_data.get("problem_description", instance.problem_description) + instance.horse_powers = validated_data.get( + "horse_powers", + instance.horse_powers) + instance.is_broken = validated_data.get( + "is_broken", + instance.is_broken) + instance.problem_description = validated_data.get( + "problem_description", + instance.problem_description) instance.save() return instance diff --git a/main.py b/main.py index 2643a3f3..126b2c47 100644 --- a/main.py +++ b/main.py @@ -11,6 +11,7 @@ def serialize_car_object(car: Car) -> bytes: serializer = CarSerializer(car) return JSONRenderer().render(serializer.data) + def deserialize_car_object(json: bytes) -> Car: stream = io.BytesIO(json) data = JSONParser().parse(stream)