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 0000000000000000000000000000000000000000..189f5c60295016bfe8ddd08c903be668b054dd43 --- /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 31b450a689ef1b2fc96503e121f6bea170ab9609..1ba6f58dde6b0ffd05955276cf405519ed62758b 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,