From 5f33c124336b98927d553529f163b243e24f6ff3 Mon Sep 17 00:00:00 2001 From: SofianeLasri <alasri250@gmail.com> Date: Tue, 13 Jun 2023 20:48:46 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20ddu=20mod=C3=A8le=20RaceType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0017_racetype_alter_race_type.py | 46 +++++++++++++++++++ WSR/models.py | 23 ++++------ 2 files changed, 56 insertions(+), 13 deletions(-) create mode 100644 WSR/migrations/0017_racetype_alter_race_type.py diff --git a/WSR/migrations/0017_racetype_alter_race_type.py b/WSR/migrations/0017_racetype_alter_race_type.py new file mode 100644 index 0000000..189f5c6 --- /dev/null +++ b/WSR/migrations/0017_racetype_alter_race_type.py @@ -0,0 +1,46 @@ +from django.db import migrations, models + + +def create_race_types(apps, schema_editor): + Race = apps.get_model('WSR', 'Race') + RaceType = apps.get_model('WSR', 'RaceType') + + race_types = set([race.type for race in Race.objects.all()]) + + with schema_editor.connection.cursor() as cursor: + for race_type in race_types: + instance, created = RaceType.objects.get_or_create(name=race_type) + if created: + instance.description = "Description du type de course" + instance.save() + + cursor.execute( + "UPDATE WSR_race SET type = %s WHERE type = %s", + [instance.id, race_type] + ) + + +class Migration(migrations.Migration): + dependencies = [ + ('WSR', '0016_vehicle_image_alter_driver_vehicle_and_more'), + ] + + operations = [ + migrations.CreateModel( + name='RaceType', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=100)), + ('description', models.TextField(blank=True, default='')), + ('font_awesome_icon', models.CharField(blank=True, default='', max_length=64)), + ('image', + models.ImageField(blank=True, default='', upload_to='racetypes', verbose_name="Image d'illustration")), + ], + ), + migrations.RunPython(create_race_types), + migrations.AlterField( + model_name='race', + name='type', + field=models.ForeignKey(on_delete=models.deletion.CASCADE, to='WSR.RaceType'), + ), + ] diff --git a/WSR/models.py b/WSR/models.py index 31b450a..1ba6f58 100644 --- a/WSR/models.py +++ b/WSR/models.py @@ -27,20 +27,17 @@ class Vehicle(models.Model): def __str__(self): return f"{self.brand} {self.model}" +class RaceType(models.Model): + name = models.CharField(max_length=100) + description = models.TextField(default="", blank=True) + font_awesome_icon = models.CharField(max_length=64, default="", blank=True) + image = models.ImageField(upload_to='racetypes', default="", blank=True, verbose_name="Image d'illustration") + + def __str__(self): + return self.name -class Race(models.Model): - class RaceType(models.TextChoices): - CHAMPIONSHIP = "championship" - SINGLE_RACE = "single_race" - FACE_TO_FACE = "face_to_face" - OVERTAKING = "overtaking" - AGAINST_TIME = "against_time" - ELIMINATION = "elimination" - ENDURANCE = "endurance" - TOUGE = "touge" - CHECKPOINT = "checkpoint" - DRIFT = "drift" +class Race(models.Model): class RaceParticipationType(models.TextChoices): INVITATION = "invitation" PARTICIPATION = "participation" @@ -85,7 +82,7 @@ class Race(models.Model): finishing_position = models.PositiveIntegerField(verbose_name="Position d'arrivée") season = models.ForeignKey(Season, on_delete=models.CASCADE) image = models.ImageField(upload_to='race_images', verbose_name="Image d'illustration") - type = models.CharField(max_length=100, choices=RaceType.choices, default=RaceType.SINGLE_RACE) + type = models.ForeignKey(RaceType, on_delete=models.CASCADE) participation_type = models.CharField( max_length=100, choices=RaceParticipationType.choices, -- GitLab