Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ venv/
.pytest_cache/
**__pycache__/
**db.sqlite3
.venv/
.venv
26 changes: 26 additions & 0 deletions car/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 4.1 on 2026-03-04 22:19

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)),
],
),
]
22 changes: 21 additions & 1 deletion car/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
from django.core.validators import MinValueValidator, MaxValueValidator
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(validators=[MinValueValidator(1), MaxValueValidator(1914)])
is_broken = serializers.BooleanField(default=False)
problem_description = serializers.CharField(required=False)

def create(self, validated_data):
return Car.objects.create(**validated_data)

def update(self, instance, validated_data):
instance.manufacturer = validated_data.get("manufacturer", instance.manufacturer)
instance.model = validated_data.get("model", instance.model)
instance.horse_power = validated_data.get("horse_power", instance.horse_power)
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
17 changes: 14 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
import io
from car.models import Car
from car.serializers import CarSerializer
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser


def serialize_car_object(car: Car) -> bytes:
pass

def serialize_car_object(car: Car) -> bytes:
serializer = CarSerializer(car)
json = JSONRenderer().render(serializer.data)
return json

def deserialize_car_object(json: bytes) -> Car:
pass
stream = io.BytesIO(json)
data = JSONParser().parse(stream)
serializer = CarSerializer(data=data)
serializer.is_valid(raise_exception=True)
car = serializer.save()
return car
Loading