mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-11-04 15:22:26 +01:00 
			
		
		
		
	Drop django-address dependency and keep only street, zip code and city (/!\ Breaking commit, can't upgrade)
This commit is contained in:
		@@ -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={
 | 
			
		||||
 
 | 
			
		||||
@@ -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',
 | 
			
		||||
            },
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -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')},
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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'},
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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',
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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',
 | 
			
		||||
            },
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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"),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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',
 | 
			
		||||
 
 | 
			
		||||
@@ -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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
@@ -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(
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@
 | 
			
		||||
                <dd class="col-sm-6">{{ user_object.registration.get_gender_display }}</dd>
 | 
			
		||||
 | 
			
		||||
                <dt class="col-sm-6 text-right">{% trans "Address:" %}</dt>
 | 
			
		||||
                <dd class="col-sm-6">{{ user_object.registration.address }}</dd>
 | 
			
		||||
                <dd class="col-sm-6">{{ user_object.registration.address }}, {{ user_object.registration.zip_code|stringformat:'05d' }} {{ user_object.registration.city }}</dd>
 | 
			
		||||
 | 
			
		||||
                <dt class="col-sm-6 text-right">{% trans "Phone number:" %}</dt>
 | 
			
		||||
                <dd class="col-sm-6">{{ user_object.registration.phone_number }}</dd>
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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 <yohann.danello@animath.fr>\n"
 | 
			
		||||
"Language-Team: LANGUAGE <LL@li.org>\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"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,6 @@ INSTALLED_APPS = [
 | 
			
		||||
    'django.contrib.staticfiles',
 | 
			
		||||
    'django.forms',
 | 
			
		||||
 | 
			
		||||
    'address',
 | 
			
		||||
    'bootstrap_datepicker_plus',
 | 
			
		||||
    'crispy_forms',
 | 
			
		||||
    'django_filters',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user