From 63a10c1be52c678929aa15498a408eda110753c6 Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Tue, 10 Jan 2023 20:24:06 +0100 Subject: [PATCH] Drop django-address dependency and keep only street, zip code and city (/!\ Breaking commit, can't upgrade) --- apps/logs/migrations/0001_initial.py | 4 +- apps/participation/migrations/0001_initial.py | 27 +- .../migrations/0002_auto_20210122_1926.py | 115 --------- .../migrations/0003_tournament_remote.py | 18 -- .../0004_passage_defender_penalties.py | 18 -- .../migrations/0005_pool_results_available.py | 18 -- .../migrations/0006_auto_20220426_1346.py | 21 -- .../migrations/0007_remove_passage_place.py | 17 -- .../migrations/0008_auto_20220429_1853.py | 24 -- apps/participation/migrations/0009_tweak.py | 27 -- apps/participation/models.py | 4 +- apps/registration/migrations/0001_initial.py | 32 +-- ...2_participantregistration_health_issues.py | 18 -- .../migrations/0003_alter_payment_type.py | 18 -- apps/registration/models.py | 17 +- .../templates/registration/user_detail.html | 2 +- apps/registration/tests.py | 19 +- locale/fr/LC_MESSAGES/django.po | 243 +++++++++--------- requirements.txt | 1 - tfjm/settings.py | 1 - tox.ini | 1 - 21 files changed, 197 insertions(+), 448 deletions(-) delete mode 100644 apps/participation/migrations/0002_auto_20210122_1926.py delete mode 100644 apps/participation/migrations/0003_tournament_remote.py delete mode 100644 apps/participation/migrations/0004_passage_defender_penalties.py delete mode 100644 apps/participation/migrations/0005_pool_results_available.py delete mode 100644 apps/participation/migrations/0006_auto_20220426_1346.py delete mode 100644 apps/participation/migrations/0007_remove_passage_place.py delete mode 100644 apps/participation/migrations/0008_auto_20220429_1853.py delete mode 100644 apps/participation/migrations/0009_tweak.py delete mode 100644 apps/registration/migrations/0002_participantregistration_health_issues.py delete mode 100644 apps/registration/migrations/0003_alter_payment_type.py diff --git a/apps/logs/migrations/0001_initial.py b/apps/logs/migrations/0001_initial.py index 14b9bdf..7cf4361 100644 --- a/apps/logs/migrations/0001_initial.py +++ b/apps/logs/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.0.11 on 2021-01-21 21:06 +# Generated by Django 3.2.13 on 2023-01-10 19:22 from django.conf import settings from django.db import migrations, models @@ -26,7 +26,7 @@ class Migration(migrations.Migration): ('data', models.TextField(blank=True, default='', verbose_name='new data')), ('action', models.CharField(choices=[('create', 'create'), ('edit', 'edit'), ('delete', 'delete')], default='edit', max_length=16, verbose_name='action')), ('timestamp', models.DateTimeField(default=django.utils.timezone.now, verbose_name='timestamp')), - ('model', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='contenttypes.ContentType', verbose_name='model')), + ('model', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='contenttypes.contenttype', verbose_name='model')), ('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ diff --git a/apps/participation/migrations/0001_initial.py b/apps/participation/migrations/0001_initial.py index 3eb3749..30dc01a 100644 --- a/apps/participation/migrations/0001_initial.py +++ b/apps/participation/migrations/0001_initial.py @@ -1,8 +1,9 @@ -# Generated by Django 3.0.11 on 2021-01-22 18:26 +# Generated by Django 3.2.13 on 2023-01-10 19:22 import datetime import django.core.validators from django.db import migrations, models +import django.db.models.deletion import django.utils.timezone import participation.models @@ -47,8 +48,8 @@ class Migration(migrations.Migration): name='Passage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('place', models.CharField(default='Non indiqué', help_text='Where the solution is presented?', max_length=255, verbose_name='place')), ('solution_number', models.PositiveSmallIntegerField(choices=[(1, 'Problem #1'), (2, 'Problem #2'), (3, 'Problem #3'), (4, 'Problem #4'), (5, 'Problem #5'), (6, 'Problem #6'), (7, 'Problem #7'), (8, 'Problem #8')], verbose_name='defended solution')), + ('defender_penalties', models.PositiveSmallIntegerField(default=0, help_text='Number of penalties for the defender. The defender will loose a 0.5 coefficient per penalty.', verbose_name='penalties')), ], options={ 'verbose_name': 'passage', @@ -61,6 +62,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('round', models.PositiveSmallIntegerField(choices=[(1, 'Round 1'), (2, 'Round 2')], verbose_name='round')), ('bbb_url', models.CharField(blank=True, default='', help_text='The link of the BBB visio for this pool.', max_length=255, verbose_name='BigBlueButton URL')), + ('results_available', models.BooleanField(default=False, help_text='Check this case when results become accessible to teams. They stay accessible to you. Only averages are given.', verbose_name='results available')), ], options={ 'verbose_name': 'pool', @@ -73,11 +75,12 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('problem', models.PositiveSmallIntegerField(choices=[(1, 'Problem #1'), (2, 'Problem #2'), (3, 'Problem #3'), (4, 'Problem #4'), (5, 'Problem #5'), (6, 'Problem #6'), (7, 'Problem #7'), (8, 'Problem #8')], verbose_name='problem')), ('final_solution', models.BooleanField(default=False, verbose_name='solution for the final tournament')), - ('file', models.FileField(blank=True, default='', unique=True, upload_to=participation.models.get_solution_filename, verbose_name='file')), + ('file', models.FileField(unique=True, upload_to=participation.models.get_solution_filename, verbose_name='file')), ], options={ 'verbose_name': 'solution', 'verbose_name_plural': 'solutions', + 'ordering': ('participation__team__trigram', 'final_solution', 'problem'), }, ), migrations.CreateModel( @@ -85,11 +88,12 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('type', models.PositiveSmallIntegerField(choices=[(1, 'opponent'), (2, 'reporter')])), - ('file', models.FileField(blank=True, default='', unique=True, upload_to=participation.models.get_synthesis_filename, verbose_name='file')), + ('file', models.FileField(unique=True, upload_to=participation.models.get_synthesis_filename, verbose_name='file')), ], options={ 'verbose_name': 'synthesis', 'verbose_name_plural': 'syntheses', + 'ordering': ('passage__pool__round', 'type'), }, ), migrations.CreateModel( @@ -113,8 +117,10 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=255, unique=True, verbose_name='name')), ('date_start', models.DateField(default=datetime.date.today, verbose_name='start')), ('date_end', models.DateField(default=datetime.date.today, verbose_name='end')), + ('place', models.CharField(max_length=255, verbose_name='place')), ('max_teams', models.PositiveSmallIntegerField(default=9, verbose_name='max team count')), ('price', models.PositiveSmallIntegerField(default=21, verbose_name='price')), + ('remote', models.BooleanField(default=False, verbose_name='remote')), ('inscription_limit', models.DateTimeField(default=django.utils.timezone.now, verbose_name='limit date for registrations')), ('solution_limit', models.DateTimeField(default=django.utils.timezone.now, verbose_name='limit date to upload solutions')), ('solutions_draw', models.DateTimeField(default=django.utils.timezone.now, verbose_name='random draw for solutions')), @@ -129,4 +135,17 @@ class Migration(migrations.Migration): 'verbose_name_plural': 'tournaments', }, ), + migrations.CreateModel( + name='Tweak', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('diff', models.IntegerField(help_text='Score to add/remove on the final score', verbose_name='difference')), + ('participation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tweaks', to='participation.participation', verbose_name='participation')), + ('pool', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='participation.pool', verbose_name='passage')), + ], + options={ + 'verbose_name': 'tweak', + 'verbose_name_plural': 'tweaks', + }, + ), ] diff --git a/apps/participation/migrations/0002_auto_20210122_1926.py b/apps/participation/migrations/0002_auto_20210122_1926.py deleted file mode 100644 index ac72117..0000000 --- a/apps/participation/migrations/0002_auto_20210122_1926.py +++ /dev/null @@ -1,115 +0,0 @@ -# Generated by Django 3.0.11 on 2021-01-22 18:26 - -import address.models -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('registration', '0001_initial'), - ('address', '0003_auto_20200830_1851'), - ('participation', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='tournament', - name='organizers', - field=models.ManyToManyField(related_name='organized_tournaments', to='registration.VolunteerRegistration', verbose_name='organizers'), - ), - migrations.AddField( - model_name='tournament', - name='place', - field=address.models.AddressField(on_delete=django.db.models.deletion.CASCADE, to='address.Address', verbose_name='place'), - ), - migrations.AddIndex( - model_name='team', - index=models.Index(fields=['trigram'], name='participati_trigram_239255_idx'), - ), - migrations.AddField( - model_name='synthesis', - name='participation', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='participation.Participation', verbose_name='participation'), - ), - migrations.AddField( - model_name='synthesis', - name='passage', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='syntheses', to='participation.Passage', verbose_name='passage'), - ), - migrations.AddField( - model_name='solution', - name='participation', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='solutions', to='participation.Participation', verbose_name='participation'), - ), - migrations.AddField( - model_name='pool', - name='juries', - field=models.ManyToManyField(related_name='jury_in', to='registration.VolunteerRegistration', verbose_name='juries'), - ), - migrations.AddField( - model_name='pool', - name='participations', - field=models.ManyToManyField(related_name='pools', to='participation.Participation', verbose_name='participations'), - ), - migrations.AddField( - model_name='pool', - name='tournament', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pools', to='participation.Tournament', verbose_name='tournament'), - ), - migrations.AddField( - model_name='passage', - name='defender', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='participation.Participation', verbose_name='defender'), - ), - migrations.AddField( - model_name='passage', - name='opponent', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='participation.Participation', verbose_name='opponent'), - ), - migrations.AddField( - model_name='passage', - name='pool', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='passages', to='participation.Pool', verbose_name='pool'), - ), - migrations.AddField( - model_name='passage', - name='reporter', - field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='participation.Participation', verbose_name='reporter'), - ), - migrations.AddField( - model_name='participation', - name='team', - field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='participation.Team', verbose_name='team'), - ), - migrations.AddField( - model_name='participation', - name='tournament', - field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='participation.Tournament', verbose_name='tournament'), - ), - migrations.AddField( - model_name='note', - name='jury', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='registration.VolunteerRegistration', verbose_name='jury'), - ), - migrations.AddField( - model_name='note', - name='passage', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='participation.Passage', verbose_name='passage'), - ), - migrations.AddIndex( - model_name='tournament', - index=models.Index(fields=['name', 'date_start', 'date_end'], name='participati_name_b43174_idx'), - ), - migrations.AlterUniqueTogether( - name='synthesis', - unique_together={('participation', 'passage', 'type')}, - ), - migrations.AlterUniqueTogether( - name='solution', - unique_together={('participation', 'problem', 'final_solution')}, - ), - ] diff --git a/apps/participation/migrations/0003_tournament_remote.py b/apps/participation/migrations/0003_tournament_remote.py deleted file mode 100644 index 1dca7a5..0000000 --- a/apps/participation/migrations/0003_tournament_remote.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.0.11 on 2021-01-23 18:36 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0002_auto_20210122_1926'), - ] - - operations = [ - migrations.AddField( - model_name='tournament', - name='remote', - field=models.BooleanField(default=False, verbose_name='remote'), - ), - ] diff --git a/apps/participation/migrations/0004_passage_defender_penalties.py b/apps/participation/migrations/0004_passage_defender_penalties.py deleted file mode 100644 index 0738a3c..0000000 --- a/apps/participation/migrations/0004_passage_defender_penalties.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1.7 on 2021-04-03 19:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0003_tournament_remote'), - ] - - operations = [ - migrations.AddField( - model_name='passage', - name='defender_penalties', - field=models.PositiveSmallIntegerField(default=0, help_text='Number of penalties for the defender. The defender will loose a 0.5 coefficient per penalty.', verbose_name='penalties'), - ), - ] diff --git a/apps/participation/migrations/0005_pool_results_available.py b/apps/participation/migrations/0005_pool_results_available.py deleted file mode 100644 index 314edca..0000000 --- a/apps/participation/migrations/0005_pool_results_available.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1.7 on 2021-04-10 07:57 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0004_passage_defender_penalties'), - ] - - operations = [ - migrations.AddField( - model_name='pool', - name='results_available', - field=models.BooleanField(default=False, help_text='Check this case when results become accessible to teams. They stay accessible to you. Only averages are given.', verbose_name='results available'), - ), - ] diff --git a/apps/participation/migrations/0006_auto_20220426_1346.py b/apps/participation/migrations/0006_auto_20220426_1346.py deleted file mode 100644 index ed6d315..0000000 --- a/apps/participation/migrations/0006_auto_20220426_1346.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 3.2.13 on 2022-04-26 11:46 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0005_pool_results_available'), - ] - - operations = [ - migrations.AlterModelOptions( - name='solution', - options={'ordering': ('participation__team__trigram', 'final_solution', 'problem'), 'verbose_name': 'solution', 'verbose_name_plural': 'solutions'}, - ), - migrations.AlterModelOptions( - name='synthesis', - options={'ordering': ('passage__pool__round', 'type'), 'verbose_name': 'synthesis', 'verbose_name_plural': 'syntheses'}, - ), - ] diff --git a/apps/participation/migrations/0007_remove_passage_place.py b/apps/participation/migrations/0007_remove_passage_place.py deleted file mode 100644 index b1810b1..0000000 --- a/apps/participation/migrations/0007_remove_passage_place.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2.13 on 2022-04-26 19:42 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0006_auto_20220426_1346'), - ] - - operations = [ - migrations.RemoveField( - model_name='passage', - name='place', - ), - ] diff --git a/apps/participation/migrations/0008_auto_20220429_1853.py b/apps/participation/migrations/0008_auto_20220429_1853.py deleted file mode 100644 index c3974a3..0000000 --- a/apps/participation/migrations/0008_auto_20220429_1853.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.2.13 on 2022-04-29 16:53 - -from django.db import migrations, models -import participation.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0007_remove_passage_place'), - ] - - operations = [ - migrations.AlterField( - model_name='solution', - name='file', - field=models.FileField(unique=True, upload_to=participation.models.get_solution_filename, verbose_name='file'), - ), - migrations.AlterField( - model_name='synthesis', - name='file', - field=models.FileField(unique=True, upload_to=participation.models.get_synthesis_filename, verbose_name='file'), - ), - ] diff --git a/apps/participation/migrations/0009_tweak.py b/apps/participation/migrations/0009_tweak.py deleted file mode 100644 index 025a03d..0000000 --- a/apps/participation/migrations/0009_tweak.py +++ /dev/null @@ -1,27 +0,0 @@ -# Generated by Django 3.2.13 on 2022-05-15 14:40 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('participation', '0008_auto_20220429_1853'), - ] - - operations = [ - migrations.CreateModel( - name='Tweak', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('diff', models.IntegerField(help_text='Score to add/remove on the final score', verbose_name='difference')), - ('participation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tweaks', to='participation.participation', verbose_name='participation')), - ('pool', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='participation.pool', verbose_name='passage')), - ], - options={ - 'verbose_name': 'tweak', - 'verbose_name_plural': 'tweaks', - }, - ), - ] diff --git a/apps/participation/models.py b/apps/participation/models.py index 47e6206..04b498b 100644 --- a/apps/participation/models.py +++ b/apps/participation/models.py @@ -4,7 +4,6 @@ from datetime import date import os -from address.models import AddressField from django.conf import settings from django.core.exceptions import ValidationError from django.core.validators import RegexValidator @@ -143,7 +142,8 @@ class Tournament(models.Model): default=date.today, ) - place = AddressField( + place = models.CharField( + max_length=255, verbose_name=_("place"), ) diff --git a/apps/registration/migrations/0001_initial.py b/apps/registration/migrations/0001_initial.py index f636a10..001c850 100644 --- a/apps/registration/migrations/0001_initial.py +++ b/apps/registration/migrations/0001_initial.py @@ -1,8 +1,8 @@ -# Generated by Django 3.0.11 on 2021-01-22 18:26 +# Generated by Django 3.2.13 on 2023-01-10 19:22 -import address.models import datetime from django.conf import settings +import django.core.validators from django.db import migrations, models import django.db.models.deletion import phonenumber_field.modelfields @@ -14,10 +14,9 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('contenttypes', '0002_remove_content_type_name'), - ('address', '0003_auto_20200830_1851'), ('participation', '0001_initial'), + ('contenttypes', '0002_remove_content_type_name'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -27,7 +26,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('give_contact_to_animath', models.BooleanField(default=False, verbose_name='Grant Animath to contact me in the future about other actions')), ('email_confirmed', models.BooleanField(default=False, verbose_name='email confirmed')), - ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_registration.registration_set+', to='contenttypes.ContentType')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_registration.registration_set+', to='contenttypes.contenttype')), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')), ], options={ @@ -38,13 +37,16 @@ class Migration(migrations.Migration): migrations.CreateModel( name='ParticipantRegistration', fields=[ - ('registration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.Registration')), + ('registration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.registration')), ('birth_date', models.DateField(default=datetime.date.today, verbose_name='birth date')), ('gender', models.CharField(choices=[('female', 'Female'), ('male', 'Male'), ('other', 'Other')], default='other', max_length=6, verbose_name='gender')), + ('address', models.CharField(max_length=255, verbose_name='address')), + ('zip_code', models.PositiveSmallIntegerField(validators=[django.core.validators.MinValueValidator(1000), django.core.validators.MaxValueValidator(99999)], verbose_name='zip code')), + ('city', models.CharField(max_length=255, verbose_name='city')), ('phone_number', phonenumber_field.modelfields.PhoneNumberField(blank=True, max_length=128, region=None, verbose_name='phone number')), + ('health_issues', models.TextField(blank=True, help_text='You can indicate here your allergies or anything that is important to know for organizers', verbose_name='health issues')), ('photo_authorization', models.FileField(blank=True, default='', upload_to=registration.models.get_random_photo_filename, verbose_name='photo authorization')), - ('address', address.models.AddressField(default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='address.Address', verbose_name='address')), - ('team', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='participants', to='participation.Team', verbose_name='team')), + ('team', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='participants', to='participation.team', verbose_name='team')), ], options={ 'abstract': False, @@ -55,7 +57,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='VolunteerRegistration', fields=[ - ('registration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.Registration')), + ('registration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.registration')), ('professional_activity', models.TextField(verbose_name='professional activity')), ], options={ @@ -67,7 +69,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='AdminRegistration', fields=[ - ('volunteerregistration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.VolunteerRegistration')), + ('volunteerregistration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.volunteerregistration')), ('role', models.TextField(verbose_name='role of the administrator')), ], options={ @@ -79,7 +81,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='CoachRegistration', fields=[ - ('participantregistration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.ParticipantRegistration')), + ('participantregistration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.participantregistration')), ('professional_activity', models.TextField(verbose_name='professional activity')), ], options={ @@ -91,7 +93,7 @@ class Migration(migrations.Migration): migrations.CreateModel( name='StudentRegistration', fields=[ - ('participantregistration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.ParticipantRegistration')), + ('participantregistration_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='registration.participantregistration')), ('student_class', models.IntegerField(choices=[(12, '12th grade'), (11, '11th grade'), (10, '10th grade or lower')], verbose_name='student class')), ('school', models.CharField(max_length=255, verbose_name='school')), ('responsible_name', models.CharField(default='', max_length=255, verbose_name='responsible name')), @@ -110,11 +112,11 @@ class Migration(migrations.Migration): name='Payment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('type', models.CharField(blank=True, choices=[('', 'No payment'), ('helloasso', 'Hello Asso'), ('scholarship', 'Scholarship'), ('bank_transfer', 'Bank transfer'), ('free', 'The tournament is free')], default='', max_length=16, verbose_name='type')), + ('type', models.CharField(blank=True, choices=[('', 'No payment'), ('helloasso', 'Hello Asso'), ('scholarship', 'Scholarship'), ('bank_transfer', 'Bank transfer'), ('other', 'Other (please indicate)'), ('free', 'The tournament is free')], default='', max_length=16, verbose_name='type')), ('scholarship_file', models.FileField(blank=True, default='', help_text='only if you have a scholarship.', upload_to=registration.models.get_scholarship_filename, verbose_name='scholarship file')), ('additional_information', models.TextField(blank=True, default='', help_text='To help us to find your payment.', verbose_name='additional information')), ('valid', models.BooleanField(default=False, null=True, verbose_name='valid')), - ('registration', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='payment', to='registration.ParticipantRegistration', verbose_name='registration')), + ('registration', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='payment', to='registration.participantregistration', verbose_name='registration')), ], options={ 'verbose_name': 'payment', diff --git a/apps/registration/migrations/0002_participantregistration_health_issues.py b/apps/registration/migrations/0002_participantregistration_health_issues.py deleted file mode 100644 index e50b992..0000000 --- a/apps/registration/migrations/0002_participantregistration_health_issues.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.0.11 on 2021-01-23 20:52 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('registration', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='participantregistration', - name='health_issues', - field=models.TextField(blank=True, help_text='You can indicate here your allergies or anything that is important to know for organizers', verbose_name='health issues'), - ), - ] diff --git a/apps/registration/migrations/0003_alter_payment_type.py b/apps/registration/migrations/0003_alter_payment_type.py deleted file mode 100644 index 7def9e0..0000000 --- a/apps/registration/migrations/0003_alter_payment_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.13 on 2022-04-26 11:46 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('registration', '0002_participantregistration_health_issues'), - ] - - operations = [ - migrations.AlterField( - model_name='payment', - name='type', - field=models.CharField(blank=True, choices=[('', 'No payment'), ('helloasso', 'Hello Asso'), ('scholarship', 'Scholarship'), ('bank_transfer', 'Bank transfer'), ('other', 'Other (please indicate)'), ('free', 'The tournament is free')], default='', max_length=16, verbose_name='type'), - ), - ] diff --git a/apps/registration/models.py b/apps/registration/models.py index d5fd812..f8b35d6 100644 --- a/apps/registration/models.py +++ b/apps/registration/models.py @@ -3,8 +3,8 @@ from datetime import date -from address.models import AddressField from django.contrib.sites.models import Site +from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.template import loader from django.urls import reverse_lazy @@ -139,10 +139,19 @@ class ParticipantRegistration(Registration): default="other", ) - address = AddressField( + address = models.CharField( + max_length=255, verbose_name=_("address"), - null=True, - default=None, + ) + + zip_code = models.PositiveSmallIntegerField( + verbose_name=_("zip code"), + validators=[MinValueValidator(1000), MaxValueValidator(99999)], + ) + + city = models.CharField( + max_length=255, + verbose_name=_("city"), ) phone_number = PhoneNumberField( diff --git a/apps/registration/templates/registration/user_detail.html b/apps/registration/templates/registration/user_detail.html index 757c15e..b64080a 100644 --- a/apps/registration/templates/registration/user_detail.html +++ b/apps/registration/templates/registration/user_detail.html @@ -46,7 +46,7 @@
{{ user_object.registration.get_gender_display }}
{% trans "Address:" %}
-
{{ user_object.registration.address }}
+
{{ user_object.registration.address }}, {{ user_object.registration.zip_code|stringformat:'05d' }} {{ user_object.registration.city }}
{% trans "Phone number:" %}
{{ user_object.registration.phone_number }}
diff --git a/apps/registration/tests.py b/apps/registration/tests.py index a788a85..0c87e0a 100644 --- a/apps/registration/tests.py +++ b/apps/registration/tests.py @@ -131,7 +131,9 @@ class TestRegistration(TestCase): school="God", birth_date="2000-01-01", gender="other", - address="1 Rue de Rivoli, 75001 Paris, France", + address="1 Rue de Rivoli", + zip_code=75001, + city="Paris", phone_number="0123456789", responsible_name="Toto", responsible_phone="0123456789", @@ -155,7 +157,9 @@ class TestRegistration(TestCase): school="God", birth_date="2000-01-01", gender="other", - address="1 Rue de Rivoli, 75001 Paris, France", + address="1 Rue de Rivoli", + zip_code=75001, + city="Paris", phone_number="0123456789", responsible_name="Toto", responsible_phone="0123456789", @@ -176,7 +180,9 @@ class TestRegistration(TestCase): role="coach", birth_date="1980-01-01", gender="other", - address="1 Rue de Rivoli, 75001 Paris, France", + address="1 Rue de Rivoli", + zip_code=75001, + city="Paris", phone_number="0123456789", professional_activity="God", give_contact_to_animath=True, @@ -255,10 +261,11 @@ class TestRegistration(TestCase): for user, data in [(self.user, dict(role="Bot")), (self.student, dict(student_class=11, school="Sky", birth_date="2001-01-01", - gender="female", address="1 Rue de Rivoli, 75001 Paris, France", - responsible_name="Toto", responsible_email="toto@example.com")), + gender="female", address="1 Rue de Rivoli", zip_code=75001, + city="Paris", responsible_name="Toto", + responsible_email="toto@example.com")), (self.coach, dict(professional_activity="God", birth_date="2001-01-01", - gender="male", address="1 Rue de Rivoli, 75001 Paris, France"))]: + gender="male", address="1 Rue de Rivoli", zip_code=75001, city="Paris"))]: response = self.client.get(reverse("registration:update_user", args=(user.pk,))) self.assertEqual(response.status_code, 200) diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 1247a4f..9231acd 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: TFJM\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-15 16:40+0200\n" +"POT-Creation-Date: 2023-01-10 20:22+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Yohann D'ANELLO \n" "Language-Team: LANGUAGE \n" @@ -100,7 +100,7 @@ msgid "Changelog of type \"{action}\" for model {model} at {timestamp}" msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}" #: apps/participation/admin.py:19 apps/participation/models.py:314 -#: apps/participation/tables.py:44 apps/registration/models.py:359 +#: apps/participation/tables.py:44 apps/registration/models.py:368 msgid "valid" msgstr "valide" @@ -108,7 +108,7 @@ msgstr "valide" msgid "This name is already used." msgstr "Ce nom est déjà utilisé." -#: apps/participation/forms.py:37 apps/participation/models.py:41 +#: apps/participation/forms.py:37 apps/participation/models.py:40 msgid "The trigram must be composed of three uppercase letters." msgstr "Le trigramme doit être composé de trois lettres majuscules." @@ -173,52 +173,53 @@ msgstr "L'utilisateur⋅rice suivant n'a pas été trouvé :" #: apps/participation/forms.py:267 msgid "The defender, the opponent and the reporter must be different." -msgstr "Læ défenseur⋅se, l'opposant⋅e et læ rapporteur⋅e doivent être différent⋅es." +msgstr "" +"Læ défenseur⋅se, l'opposant⋅e et læ rapporteur⋅e doivent être différent⋅es." #: apps/participation/forms.py:271 msgid "This defender did not work on this problem." msgstr "Ce⋅tte défenseur⋅se ne travaille pas sur ce problème." -#: apps/participation/models.py:34 apps/participation/models.py:132 +#: apps/participation/models.py:33 apps/participation/models.py:131 #: apps/participation/tables.py:17 apps/participation/tables.py:34 msgid "name" msgstr "nom" -#: apps/participation/models.py:40 apps/participation/tables.py:39 +#: apps/participation/models.py:39 apps/participation/tables.py:39 msgid "trigram" msgstr "trigramme" -#: apps/participation/models.py:48 +#: apps/participation/models.py:47 msgid "access code" msgstr "code d'accès" -#: apps/participation/models.py:49 +#: apps/participation/models.py:48 msgid "The access code let other people to join the team." msgstr "Le code d'accès permet aux autres participants de rejoindre l'équipe." -#: apps/participation/models.py:53 +#: apps/participation/models.py:52 msgid "motivation letter" msgstr "lettre de motivation" -#: apps/participation/models.py:119 +#: apps/participation/models.py:118 #, python-brace-format msgid "Team {name} ({trigram})" msgstr "Équipe {name} ({trigram})" -#: apps/participation/models.py:122 apps/participation/models.py:299 +#: apps/participation/models.py:121 apps/participation/models.py:299 #: apps/registration/models.py:123 msgid "team" msgstr "équipe" -#: apps/participation/models.py:123 apps/participation/tables.py:85 +#: apps/participation/models.py:122 apps/participation/tables.py:85 msgid "teams" msgstr "équipes" -#: apps/participation/models.py:137 +#: apps/participation/models.py:136 msgid "start" msgstr "début" -#: apps/participation/models.py:142 +#: apps/participation/models.py:141 msgid "end" msgstr "fin" @@ -306,7 +307,7 @@ msgid "Participation of the team {name} ({trigram})" msgstr "Participation de l'équipe {name} ({trigram})" #: apps/participation/models.py:331 apps/participation/models.py:528 -#: apps/participation/models.py:555 apps/participation/models.py:593 +#: apps/participation/models.py:558 apps/participation/models.py:596 msgid "participation" msgstr "participation" @@ -365,7 +366,7 @@ msgstr "poules" msgid "defended solution" msgstr "solution défendue" -#: apps/participation/models.py:411 apps/participation/models.py:562 +#: apps/participation/models.py:411 apps/participation/models.py:565 #, python-brace-format msgid "Problem #{problem}" msgstr "Problème n°{problem}" @@ -374,11 +375,11 @@ msgstr "Problème n°{problem}" msgid "defender" msgstr "défenseur" -#: apps/participation/models.py:425 apps/participation/models.py:605 +#: apps/participation/models.py:425 apps/participation/models.py:608 msgid "opponent" msgstr "opposant" -#: apps/participation/models.py:432 apps/participation/models.py:606 +#: apps/participation/models.py:432 apps/participation/models.py:609 msgid "reporter" msgstr "rapporteur" @@ -391,8 +392,8 @@ msgid "" "Number of penalties for the defender. The defender will loose a 0.5 " "coefficient per penalty." msgstr "" -"Nombre de pénalités pour læ défenseur⋅se. Læ défenseur⋅se perd un coefficient 0.5 " -"sur sa solution écrite par pénalité." +"Nombre de pénalités pour læ défenseur⋅se. Læ défenseur⋅se perd un " +"coefficient 0.5 sur sa solution écrite par pénalité." #: apps/participation/models.py:499 apps/participation/models.py:502 #: apps/participation/models.py:505 @@ -406,7 +407,7 @@ msgid "Passage of {defender} for problem {problem}" msgstr "Passage de {defender} pour le problème {problem}" #: apps/participation/models.py:514 apps/participation/models.py:522 -#: apps/participation/models.py:600 apps/participation/models.py:642 +#: apps/participation/models.py:603 apps/participation/models.py:645 msgid "passage" msgstr "passage" @@ -422,96 +423,96 @@ msgstr "différence" msgid "Score to add/remove on the final score" msgstr "Score à ajouter/retrancher au score final" -#: apps/participation/models.py:538 +#: apps/participation/models.py:541 msgid "tweak" msgstr "harmonisation" -#: apps/participation/models.py:539 +#: apps/participation/models.py:542 msgid "tweaks" msgstr "harmonisations" -#: apps/participation/models.py:560 +#: apps/participation/models.py:563 msgid "problem" msgstr "numéro de problème" -#: apps/participation/models.py:567 +#: apps/participation/models.py:570 msgid "solution for the final tournament" msgstr "solution pour la finale" -#: apps/participation/models.py:572 apps/participation/models.py:611 +#: apps/participation/models.py:575 apps/participation/models.py:614 msgid "file" msgstr "fichier" -#: apps/participation/models.py:578 +#: apps/participation/models.py:581 #, python-brace-format msgid "Solution of team {team} for problem {problem}" msgstr "Solution de l'équipe {team} pour le problème {problem}" -#: apps/participation/models.py:580 +#: apps/participation/models.py:583 msgid "for final" msgstr "pour la finale" -#: apps/participation/models.py:583 +#: apps/participation/models.py:586 msgid "solution" msgstr "solution" -#: apps/participation/models.py:584 +#: apps/participation/models.py:587 msgid "solutions" msgstr "solutions" -#: apps/participation/models.py:617 +#: apps/participation/models.py:620 #, python-brace-format msgid "Synthesis of {team} as {type} for problem {problem} of {defender}" msgstr "" "Note de synthèse de l'équipe {team} en tant que {type} pour le problème " "{problem} de {defender}" -#: apps/participation/models.py:625 +#: apps/participation/models.py:628 msgid "synthesis" msgstr "note de synthèse" -#: apps/participation/models.py:626 +#: apps/participation/models.py:629 msgid "syntheses" msgstr "notes de synthèse" -#: apps/participation/models.py:635 +#: apps/participation/models.py:638 msgid "jury" msgstr "jury" -#: apps/participation/models.py:647 +#: apps/participation/models.py:650 msgid "defender writing note" msgstr "note d'écrit de læ défenseur⋅se" -#: apps/participation/models.py:653 +#: apps/participation/models.py:656 msgid "defender oral note" msgstr "note d'oral de læ défenseur⋅se" -#: apps/participation/models.py:659 +#: apps/participation/models.py:662 msgid "opponent writing note" msgstr "note d'écrit de l'opposant⋅e" -#: apps/participation/models.py:665 +#: apps/participation/models.py:668 msgid "opponent oral note" msgstr "note d'oral de l'opposant⋅e" -#: apps/participation/models.py:671 +#: apps/participation/models.py:674 msgid "reporter writing note" msgstr "note d'écrit de læ rapporteur⋅e" -#: apps/participation/models.py:677 +#: apps/participation/models.py:680 msgid "reporter oral note" msgstr "note d'oral de læ rapporteur⋅e" -#: apps/participation/models.py:695 +#: apps/participation/models.py:698 #, python-brace-format msgid "Notes of {jury} for {passage}" msgstr "Notes de {jury} pour le {passage}" -#: apps/participation/models.py:702 +#: apps/participation/models.py:705 msgid "note" msgstr "note" -#: apps/participation/models.py:703 +#: apps/participation/models.py:706 msgid "notes" msgstr "notes" @@ -938,7 +939,7 @@ msgid "Invalidate" msgstr "Invalider" #: apps/participation/templates/participation/team_detail.html:171 -#: apps/participation/views.py:329 +#: apps/participation/views.py:328 msgid "Upload motivation letter" msgstr "Envoyer la lettre de motivation" @@ -947,7 +948,7 @@ msgid "Update team" msgstr "Modifier l'équipe" #: apps/participation/templates/participation/team_detail.html:181 -#: apps/participation/views.py:432 +#: apps/participation/views.py:431 msgid "Leave team" msgstr "Quitter l'équipe" @@ -1059,49 +1060,49 @@ msgstr "Retour aux détails de l'utilisateur⋅rice" msgid "Templates:" msgstr "Modèles :" -#: apps/participation/views.py:45 tfjm/templates/base.html:71 +#: apps/participation/views.py:44 tfjm/templates/base.html:71 #: tfjm/templates/base.html:230 msgid "Create team" msgstr "Créer une équipe" -#: apps/participation/views.py:54 apps/participation/views.py:99 +#: apps/participation/views.py:53 apps/participation/views.py:98 msgid "You don't participate, so you can't create a team." msgstr "Vous ne participez pas, vous ne pouvez pas créer d'équipe." -#: apps/participation/views.py:56 apps/participation/views.py:101 +#: apps/participation/views.py:55 apps/participation/views.py:100 msgid "You are already in a team." msgstr "Vous êtes déjà dans une équipe." -#: apps/participation/views.py:90 tfjm/templates/base.html:76 +#: apps/participation/views.py:89 tfjm/templates/base.html:76 #: tfjm/templates/base.html:225 msgid "Join team" msgstr "Rejoindre une équipe" -#: apps/participation/views.py:152 apps/participation/views.py:438 -#: apps/participation/views.py:472 +#: apps/participation/views.py:151 apps/participation/views.py:437 +#: apps/participation/views.py:471 msgid "You are not in a team." msgstr "Vous n'êtes pas dans une équipe." -#: apps/participation/views.py:153 apps/participation/views.py:473 +#: apps/participation/views.py:152 apps/participation/views.py:472 msgid "You don't participate, so you don't have any team." msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe." -#: apps/participation/views.py:179 +#: apps/participation/views.py:178 #, python-brace-format msgid "Detail of team {trigram}" msgstr "Détails de l'équipe {trigram}" -#: apps/participation/views.py:215 +#: apps/participation/views.py:214 msgid "You don't participate, so you can't request the validation of the team." msgstr "" "Vous ne participez pas, vous ne pouvez pas demander la validation de " "l'équipe." -#: apps/participation/views.py:218 +#: apps/participation/views.py:217 msgid "The validation of the team is already done or pending." msgstr "La validation de l'équipe est déjà faite ou en cours." -#: apps/participation/views.py:221 +#: apps/participation/views.py:220 msgid "" "The team can't be validated: missing email address confirmations, " "authorizations, people, motivation letter or the tournament is not set." @@ -1110,74 +1111,74 @@ msgstr "" "d'adresse e-mail, soit une autorisation, soit des personnes, soit la lettre " "de motivation, soit le tournoi n'a pas été choisi." -#: apps/participation/views.py:243 +#: apps/participation/views.py:242 msgid "You are not an organizer of the tournament." msgstr "Vous n'êtes pas un⋅e organisateur⋅rice du tournoi." -#: apps/participation/views.py:246 +#: apps/participation/views.py:245 msgid "This team has no pending validation." msgstr "L'équipe n'a pas de validation en attente." -#: apps/participation/views.py:276 +#: apps/participation/views.py:275 msgid "You must specify if you validate the registration or not." msgstr "Vous devez spécifier si vous validez l'inscription ou non." -#: apps/participation/views.py:309 +#: apps/participation/views.py:308 #, python-brace-format msgid "Update team {trigram}" msgstr "Mise à jour de l'équipe {trigram}" -#: apps/participation/views.py:368 apps/participation/views.py:418 +#: apps/participation/views.py:367 apps/participation/views.py:417 #, python-brace-format msgid "Motivation letter of {team}.{ext}" msgstr "Lettre de motivation de {team}.{ext}" -#: apps/participation/views.py:399 +#: apps/participation/views.py:398 #, python-brace-format msgid "Photo authorization of {participant}.{ext}" msgstr "Autorisation de droit à l'image de {participant}.{ext}" -#: apps/participation/views.py:405 +#: apps/participation/views.py:404 #, python-brace-format msgid "Parental authorization of {participant}.{ext}" msgstr "Autorisation parentale de {participant}.{ext}" -#: apps/participation/views.py:412 +#: apps/participation/views.py:411 #, python-brace-format msgid "Health sheet of {participant}.{ext}" msgstr "Fiche sanitaire de {participant}.{ext}" -#: apps/participation/views.py:422 +#: apps/participation/views.py:421 #, python-brace-format msgid "Photo authorizations of team {trigram}.zip" msgstr "Autorisations de droit à l'image de l'équipe {trigram}.zip" -#: apps/participation/views.py:440 +#: apps/participation/views.py:439 msgid "The team is already validated or the validation is pending." msgstr "La validation de l'équipe est déjà faite ou en cours." -#: apps/participation/views.py:487 +#: apps/participation/views.py:486 msgid "The team is not validated yet." msgstr "L'équipe n'est pas encore validée." -#: apps/participation/views.py:501 +#: apps/participation/views.py:500 #, python-brace-format msgid "Participation of team {trigram}" msgstr "Participation de l'équipe {trigram}" -#: apps/participation/views.py:627 +#: apps/participation/views.py:626 msgid "You can't upload a solution after the deadline." msgstr "Vous ne pouvez pas envoyer de solution après la date limite." -#: apps/participation/views.py:730 +#: apps/participation/views.py:729 msgid "The following user is not registered as a jury:" msgstr "L'utilisateur⋅rice suivant n'est pas inscrit⋅e en tant que juré⋅e :" -#: apps/participation/views.py:738 +#: apps/participation/views.py:737 msgid "Notes were successfully uploaded." msgstr "Les notes ont bien été envoyées." -#: apps/participation/views.py:850 +#: apps/participation/views.py:849 msgid "You can't upload a synthesis after the deadline." msgstr "Vous ne pouvez pas envoyer de note de synthèse après la date limite." @@ -1189,7 +1190,7 @@ msgstr "rôle" msgid "participant" msgstr "participant⋅e" -#: apps/registration/forms.py:25 apps/registration/models.py:259 +#: apps/registration/forms.py:25 apps/registration/models.py:268 msgid "coach" msgstr "encadrant⋅e" @@ -1197,11 +1198,11 @@ msgstr "encadrant⋅e" msgid "This email address is already used." msgstr "Cette adresse e-mail est déjà utilisée." -#: apps/registration/forms.py:56 apps/registration/models.py:285 +#: apps/registration/forms.py:56 apps/registration/models.py:294 msgid "volunteer" msgstr "bénévole" -#: apps/registration/forms.py:57 apps/registration/models.py:304 +#: apps/registration/forms.py:57 apps/registration/models.py:313 msgid "admin" msgstr "admin" @@ -1226,7 +1227,7 @@ msgstr "email confirmé" msgid "Activate your TFJM² account" msgstr "Activez votre compte du TFJM²" -#: apps/registration/models.py:99 apps/registration/models.py:325 +#: apps/registration/models.py:99 apps/registration/models.py:334 msgid "registration" msgstr "inscription" @@ -1254,19 +1255,27 @@ msgstr "Homme" msgid "Other" msgstr "Autre" -#: apps/registration/models.py:143 +#: apps/registration/models.py:144 msgid "address" msgstr "adresse" -#: apps/registration/models.py:149 +#: apps/registration/models.py:148 +msgid "zip code" +msgstr "code postal" + +#: apps/registration/models.py:154 +msgid "city" +msgstr "ville" + +#: apps/registration/models.py:158 msgid "phone number" msgstr "numéro de téléphone" -#: apps/registration/models.py:154 +#: apps/registration/models.py:163 msgid "health issues" msgstr "problèmes de santé" -#: apps/registration/models.py:156 +#: apps/registration/models.py:165 msgid "" "You can indicate here your allergies or anything that is important to know " "for organizers" @@ -1274,136 +1283,136 @@ msgstr "" "Vous pouvez indiquer ici vos allergies ou n'importe quoi qui peut être bon à " "savoir pour les organisateur⋅rices" -#: apps/registration/models.py:160 +#: apps/registration/models.py:169 msgid "photo authorization" msgstr "autorisation de droit à l'image" -#: apps/registration/models.py:192 +#: apps/registration/models.py:201 msgid "12th grade" msgstr "Terminale" -#: apps/registration/models.py:193 +#: apps/registration/models.py:202 msgid "11th grade" msgstr "Première" -#: apps/registration/models.py:194 +#: apps/registration/models.py:203 msgid "10th grade or lower" msgstr "Seconde ou inférieur" -#: apps/registration/models.py:196 +#: apps/registration/models.py:205 msgid "student class" msgstr "classe" -#: apps/registration/models.py:201 +#: apps/registration/models.py:210 msgid "school" msgstr "école" -#: apps/registration/models.py:206 +#: apps/registration/models.py:215 msgid "responsible name" msgstr "nom de læ responsable légal⋅e" -#: apps/registration/models.py:211 +#: apps/registration/models.py:220 msgid "responsible phone number" msgstr "numéro de téléphone de læ responsable légal⋅e" -#: apps/registration/models.py:216 +#: apps/registration/models.py:225 msgid "responsible email address" msgstr "adresse e-mail de læ responsable légal⋅e" -#: apps/registration/models.py:221 +#: apps/registration/models.py:230 msgid "parental authorization" msgstr "autorisation parentale" -#: apps/registration/models.py:228 +#: apps/registration/models.py:237 msgid "health sheet" msgstr "fiche sanitaire" -#: apps/registration/models.py:236 +#: apps/registration/models.py:245 msgid "student" msgstr "étudiant⋅e" -#: apps/registration/models.py:244 +#: apps/registration/models.py:253 msgid "student registration" msgstr "inscription d'élève" -#: apps/registration/models.py:245 +#: apps/registration/models.py:254 msgid "student registrations" msgstr "inscriptions d'élève" -#: apps/registration/models.py:254 apps/registration/models.py:276 +#: apps/registration/models.py:263 apps/registration/models.py:285 msgid "professional activity" msgstr "activité professionnelle" -#: apps/registration/models.py:267 +#: apps/registration/models.py:276 msgid "coach registration" msgstr "inscription d'encadrant⋅e" -#: apps/registration/models.py:268 +#: apps/registration/models.py:277 msgid "coach registrations" msgstr "inscriptions d'encadrant⋅es" -#: apps/registration/models.py:299 +#: apps/registration/models.py:308 msgid "role of the administrator" msgstr "rôle de l'administrateur⋅rice" -#: apps/registration/models.py:312 +#: apps/registration/models.py:321 msgid "admin registration" msgstr "inscription d'administrateur⋅rice" -#: apps/registration/models.py:313 +#: apps/registration/models.py:322 msgid "admin registrations" msgstr "inscriptions d'administrateur⋅rices" -#: apps/registration/models.py:329 +#: apps/registration/models.py:338 msgid "type" msgstr "type" -#: apps/registration/models.py:332 +#: apps/registration/models.py:341 msgid "No payment" msgstr "Pas de paiement" -#: apps/registration/models.py:334 +#: apps/registration/models.py:343 msgid "Scholarship" msgstr "Notification de bourse" -#: apps/registration/models.py:335 +#: apps/registration/models.py:344 msgid "Bank transfer" msgstr "Virement bancaire" -#: apps/registration/models.py:336 +#: apps/registration/models.py:345 msgid "Other (please indicate)" msgstr "Autre (veuillez spécifier)" -#: apps/registration/models.py:337 +#: apps/registration/models.py:346 msgid "The tournament is free" msgstr "Le tournoi est gratuit" -#: apps/registration/models.py:344 +#: apps/registration/models.py:353 msgid "scholarship file" msgstr "Notification de bourse" -#: apps/registration/models.py:345 +#: apps/registration/models.py:354 msgid "only if you have a scholarship." msgstr "Nécessaire seulement si vous déclarez être boursier." -#: apps/registration/models.py:352 +#: apps/registration/models.py:361 msgid "additional information" msgstr "informations additionnelles" -#: apps/registration/models.py:353 +#: apps/registration/models.py:362 msgid "To help us to find your payment." msgstr "Pour nous aider à retrouver votre paiement, si nécessaire." -#: apps/registration/models.py:368 +#: apps/registration/models.py:377 #, python-brace-format msgid "Payment of {registration}" msgstr "Paiement de {registration}" -#: apps/registration/models.py:371 +#: apps/registration/models.py:380 msgid "payment" msgstr "paiement" -#: apps/registration/models.py:372 +#: apps/registration/models.py:381 msgid "payments" msgstr "paiements" @@ -1575,8 +1584,8 @@ msgid "" "your scholarship attestation." msgstr "" "Le prix du tournoi est de %(price)s €. Les frais de participation sont " -"offerts pour les encadrant⋅es et les étudiant⋅es boursièr⋅es. Si c'est le cas, " -"merci de nous transmettre votre notification de bourse." +"offerts pour les encadrant⋅es et les étudiant⋅es boursièr⋅es. Si c'est le " +"cas, merci de nous transmettre votre notification de bourse." #: apps/registration/templates/registration/payment_form.html:17 msgid "" @@ -1834,11 +1843,11 @@ msgstr "Autorisation parentale de {student}.{ext}" msgid "Scholarship attestation of {user}.{ext}" msgstr "Notification de bourse de {user}.{ext}" -#: tfjm/settings.py:163 +#: tfjm/settings.py:162 msgid "English" msgstr "Anglais" -#: tfjm/settings.py:164 +#: tfjm/settings.py:163 msgid "French" msgstr "Français" diff --git a/requirements.txt b/requirements.txt index 56a41c1..d91fb6b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ Django>=3.2,<4.0 -django-address~=0.2 django-bootstrap-datepicker-plus~=4.0 django-cas-server~=1.3 django-crispy-forms~=1.9 diff --git a/tfjm/settings.py b/tfjm/settings.py index dba9aff..f7fe9ed 100644 --- a/tfjm/settings.py +++ b/tfjm/settings.py @@ -53,7 +53,6 @@ INSTALLED_APPS = [ 'django.contrib.staticfiles', 'django.forms', - 'address', 'bootstrap_datepicker_plus', 'crispy_forms', 'django_filters', diff --git a/tox.ini b/tox.ini index 9d4e3f3..10b9c5e 100644 --- a/tox.ini +++ b/tox.ini @@ -12,7 +12,6 @@ sitepackages = False deps = coverage Django>=3.2,<4.0 - django-address~=0.2 django-bootstrap-datepicker-plus~=4.0 django-crispy-forms~=1.9 django-filter~=2.4