diff --git a/apps/participation/migrations/0006_phase.py b/apps/participation/migrations/0006_phase.py new file mode 100644 index 0000000..3ab256e --- /dev/null +++ b/apps/participation/migrations/0006_phase.py @@ -0,0 +1,61 @@ +# Generated by Django 3.1.1 on 2020-10-20 10:39 + +from django.db import migrations, models +import django.utils.timezone + + +def register_phases(apps, schema_editor): + """ + Import the different phases of the action + """ + Phase = apps.get_model("participation", "phase") + Phase.objects.get_or_create( + phase_number=1, + description="Soumission des vidéos", + ) + Phase.objects.get_or_create( + phase_number=2, + description="Phase de questions", + ) + Phase.objects.get_or_create( + phase_number=3, + description="Phase d'échanges entre les équipes", + ) + Phase.objects.get_or_create( + phase_number=4, + description="Soumission de la vidéo de synthèse de l'échange", + ) + + +def reverse_phase_registering(apps, schema_editor): + """ + Drop all phases in order to unapply this migration. + """ + Phase = apps.get_model("participation", "phase") + Phase.objects.all().delete() + + +class Migration(migrations.Migration): + dependencies = [ + ('participation', '0005_participation_valid'), + ] + + operations = [ + migrations.CreateModel( + name='Phase', + fields=[ + ('phase_number', models.AutoField(primary_key=True, serialize=False, unique=True, verbose_name='phase number')), + ('description', models.CharField(max_length=255, verbose_name="phase description")), + ('start', models.DateTimeField(default=django.utils.timezone.now, verbose_name='start date of the given phase')), + ('end', models.DateTimeField(default=django.utils.timezone.now, verbose_name='end date of the given phase')), + ], + options={ + 'verbose_name': 'phase', + 'verbose_name_plural': 'phases', + }, + ), + migrations.RunPython( + register_phases, + reverse_phase_registering, + ), + ] diff --git a/apps/participation/models.py b/apps/participation/models.py index c3f3e4e..2ec6233 100644 --- a/apps/participation/models.py +++ b/apps/participation/models.py @@ -6,6 +6,7 @@ from django.core.validators import RegexValidator from django.db import models from django.db.models import Index from django.urls import reverse_lazy +from django.utils import timezone from django.utils.crypto import get_random_string from django.utils.text import format_lazy from django.utils.translation import gettext_lazy as _ @@ -168,3 +169,34 @@ class Video(models.Model): class Meta: verbose_name = _("video") verbose_name_plural = _("videos") + + +class Phase(models.Model): + phase_number = models.AutoField( + primary_key=True, + unique=True, + verbose_name=_("phase number"), + ) + + description = models.CharField( + max_length=255, + verbose_name=_("phase description"), + ) + + start = models.DateTimeField( + verbose_name=_("start date of the given phase"), + default=timezone.now, + ) + + end = models.DateTimeField( + verbose_name=_("end date of the given phase"), + default=timezone.now, + ) + + def __str__(self): + return _("Phase {phase_number:d} starts on {start:%Y-%m-%d %H:%M:} and ends on {end:%Y-%m-%d %H:%M}")\ + .format(phase_number=self.phase_number, start=self.start, end=self.end) + + class Meta: + verbose_name = _("phase") + verbose_name_plural = _("phases")