Add position field for passages

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello 2023-04-07 00:05:56 +02:00
parent 1ed4e9c17a
commit 7dc812984b
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
7 changed files with 168 additions and 85 deletions

View File

@ -375,10 +375,11 @@ class Pool(models.Model):
[4, 1, 2], [4, 1, 2],
] ]
for line in table: for i, line in enumerate(table):
# Create the passage # Create the passage
await Passage.objects.acreate( await Passage.objects.acreate(
pool=self.associated_pool, pool=self.associated_pool,
position=i + 1,
solution_number=tds[line[0]].accepted, solution_number=tds[line[0]].accepted,
defender=tds[line[0]].participation, defender=tds[line[0]].participation,
opponent=tds[line[1]].participation, opponent=tds[line[1]].participation,

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TFJM\n" "Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-06 23:57+0200\n" "POT-Creation-Date: 2023-04-07 00:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n" "Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -33,7 +33,7 @@ msgstr "équipes"
msgid "tournament" msgid "tournament"
msgstr "tournoi" msgstr "tournoi"
#: draw/admin.py:60 draw/models.py:228 draw/models.py:414 #: draw/admin.py:60 draw/models.py:228 draw/models.py:415
#: participation/models.py:355 #: participation/models.py:355
msgid "round" msgid "round"
msgstr "tour" msgstr "tour"
@ -201,78 +201,78 @@ msgstr "poule associée"
msgid "The full pool instance." msgid "The full pool instance."
msgstr "L'instance complète de la poule." msgstr "L'instance complète de la poule."
#: draw/models.py:392 #: draw/models.py:393
#, python-brace-format #, python-brace-format
msgid "Pool {letter}{number}" msgid "Pool {letter}{number}"
msgstr "Poule {letter}{number}" msgstr "Poule {letter}{number}"
#: draw/models.py:395 draw/models.py:422 participation/admin.py:69 #: draw/models.py:396 draw/models.py:423 participation/admin.py:69
#: participation/admin.py:88 participation/models.py:421 #: participation/admin.py:88 participation/models.py:421
#: participation/models.py:430 participation/tables.py:82 #: participation/models.py:430 participation/tables.py:82
msgid "pool" msgid "pool"
msgstr "poule" msgstr "poule"
#: draw/models.py:396 participation/models.py:422 #: draw/models.py:397 participation/models.py:422
msgid "pools" msgid "pools"
msgstr "poules" msgstr "poules"
#: draw/models.py:408 participation/models.py:342 participation/models.py:554 #: draw/models.py:409 participation/models.py:342 participation/models.py:562
#: participation/models.py:584 participation/models.py:622 #: participation/models.py:592 participation/models.py:630
msgid "participation" msgid "participation"
msgstr "participation" msgstr "participation"
#: draw/models.py:429 #: draw/models.py:430
msgid "passage index" msgid "passage index"
msgstr "numéro de passage" msgstr "numéro de passage"
#: draw/models.py:430 #: draw/models.py:431
msgid "" msgid ""
"The passage order in the pool, between 0 and the size of the pool minus 1." "The passage order in the pool, between 0 and the size of the pool minus 1."
msgstr "" msgstr ""
"L'ordre de passage dans la poule, de 0 à la taille de la poule moins 1." "L'ordre de passage dans la poule, de 0 à la taille de la poule moins 1."
#: draw/models.py:438 #: draw/models.py:439
msgid "choose index" msgid "choose index"
msgstr "numéro de choix" msgstr "numéro de choix"
#: draw/models.py:439 #: draw/models.py:440
msgid "" msgid ""
"The choice order in the pool, between 0 and the size of the pool minus 1." "The choice order in the pool, between 0 and the size of the pool minus 1."
msgstr "" msgstr ""
"L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1." "L'ordre de choix dans la poule, entre 0 et la taille de la poule moins 1."
#: draw/models.py:445 draw/models.py:468 participation/models.py:437 #: draw/models.py:446 draw/models.py:469 participation/models.py:444
#: participation/models.py:591 #: participation/models.py:599
#, python-brace-format #, python-brace-format
msgid "Problem #{problem}" msgid "Problem #{problem}"
msgstr "Problème n°{problem}" msgstr "Problème n°{problem}"
#: draw/models.py:449 draw/models.py:472 #: draw/models.py:450 draw/models.py:473
msgid "accepted problem" msgid "accepted problem"
msgstr "problème accepté" msgstr "problème accepté"
#: draw/models.py:456 #: draw/models.py:457
msgid "passage dice" msgid "passage dice"
msgstr "dé d'ordre de passage" msgstr "dé d'ordre de passage"
#: draw/models.py:463 #: draw/models.py:464
msgid "choice dice" msgid "choice dice"
msgstr "dé d'ordre de choix" msgstr "dé d'ordre de choix"
#: draw/models.py:477 #: draw/models.py:478
msgid "rejected problems" msgid "rejected problems"
msgstr "problèmes rejetés" msgstr "problèmes rejetés"
#: draw/models.py:503 #: draw/models.py:504
#, python-brace-format #, python-brace-format
msgid "Draw of the team {trigram} for the pool {letter}{number}" msgid "Draw of the team {trigram} for the pool {letter}{number}"
msgstr "Tirage de l'équipe {trigram} pour la poule {letter}{number}" msgstr "Tirage de l'équipe {trigram} pour la poule {letter}{number}"
#: draw/models.py:509 #: draw/models.py:510
msgid "team draw" msgid "team draw"
msgstr "tirage d'équipe" msgstr "tirage d'équipe"
#: draw/models.py:510 #: draw/models.py:511
msgid "team draws" msgid "team draws"
msgstr "tirages d'équipe" msgstr "tirages d'équipe"
@ -434,21 +434,21 @@ msgid "selected for final"
msgstr "sélectionnée pour la finale" msgstr "sélectionnée pour la finale"
#: participation/admin.py:57 participation/admin.py:116 #: participation/admin.py:57 participation/admin.py:116
#: participation/models.py:444 participation/tables.py:109 #: participation/models.py:451 participation/tables.py:109
msgid "defender" msgid "defender"
msgstr "défenseur⋅se" msgstr "défenseur⋅se"
#: participation/admin.py:61 participation/models.py:451 #: participation/admin.py:61 participation/models.py:458
#: participation/models.py:634 #: participation/models.py:642
msgid "opponent" msgid "opponent"
msgstr "opposant⋅e" msgstr "opposant⋅e"
#: participation/admin.py:65 participation/models.py:458 #: participation/admin.py:65 participation/models.py:465
#: participation/models.py:635 #: participation/models.py:643
msgid "reporter" msgid "reporter"
msgstr "rapporteur⋅e" msgstr "rapporteur⋅e"
#: participation/admin.py:120 participation/models.py:589 #: participation/admin.py:120 participation/models.py:597
msgid "problem" msgid "problem"
msgstr "numéro de problème" msgstr "numéro de problème"
@ -699,14 +699,18 @@ msgid "Pool of day {round} for tournament {tournament} with teams {teams}"
msgstr "Poule du jour {round} du tournoi {tournament} avec les équipes {teams}" msgstr "Poule du jour {round} du tournoi {tournament} avec les équipes {teams}"
#: participation/models.py:435 #: participation/models.py:435
msgid "position"
msgstr "position"
#: participation/models.py:442
msgid "defended solution" msgid "defended solution"
msgstr "solution défendue" msgstr "solution défendue"
#: participation/models.py:463 #: participation/models.py:470
msgid "penalties" msgid "penalties"
msgstr "pénalités" msgstr "pénalités"
#: participation/models.py:465 #: participation/models.py:472
msgid "" msgid ""
"Number of penalties for the defender. The defender will loose a 0.5 " "Number of penalties for the defender. The defender will loose a 0.5 "
"coefficient per penalty." "coefficient per penalty."
@ -714,120 +718,120 @@ msgstr ""
"Nombre de pénalités pour læ défenseur⋅se. Læ défenseur⋅se perd un " "Nombre de pénalités pour læ défenseur⋅se. Læ défenseur⋅se perd un "
"coefficient 0.5 sur sa présentation orale par pénalité." "coefficient 0.5 sur sa présentation orale par pénalité."
#: participation/models.py:525 participation/models.py:528 #: participation/models.py:532 participation/models.py:535
#: participation/models.py:531 #: participation/models.py:538
#, python-brace-format #, python-brace-format
msgid "Team {trigram} is not registered in the pool." msgid "Team {trigram} is not registered in the pool."
msgstr "L'équipe {trigram} n'est pas inscrite dans la poule." msgstr "L'équipe {trigram} n'est pas inscrite dans la poule."
#: participation/models.py:536 #: participation/models.py:543
#, python-brace-format #, python-brace-format
msgid "Passage of {defender} for problem {problem}" msgid "Passage of {defender} for problem {problem}"
msgstr "Passage de {defender} pour le problème {problem}" msgstr "Passage de {defender} pour le problème {problem}"
#: participation/models.py:540 participation/models.py:548 #: participation/models.py:547 participation/models.py:556
#: participation/models.py:629 participation/models.py:671 #: participation/models.py:637 participation/models.py:679
msgid "passage" msgid "passage"
msgstr "passage" msgstr "passage"
#: participation/models.py:541 #: participation/models.py:548
msgid "passages" msgid "passages"
msgstr "passages" msgstr "passages"
#: participation/models.py:559 #: participation/models.py:567
msgid "difference" msgid "difference"
msgstr "différence" msgstr "différence"
#: participation/models.py:560 #: participation/models.py:568
msgid "Score to add/remove on the final score" msgid "Score to add/remove on the final score"
msgstr "Score à ajouter/retrancher au score final" msgstr "Score à ajouter/retrancher au score final"
#: participation/models.py:567 #: participation/models.py:575
msgid "tweak" msgid "tweak"
msgstr "harmonisation" msgstr "harmonisation"
#: participation/models.py:568 #: participation/models.py:576
msgid "tweaks" msgid "tweaks"
msgstr "harmonisations" msgstr "harmonisations"
#: participation/models.py:596 #: participation/models.py:604
msgid "solution for the final tournament" msgid "solution for the final tournament"
msgstr "solution pour la finale" msgstr "solution pour la finale"
#: participation/models.py:601 participation/models.py:640 #: participation/models.py:609 participation/models.py:648
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: participation/models.py:607 #: participation/models.py:615
#, python-brace-format #, python-brace-format
msgid "Solution of team {team} for problem {problem}" msgid "Solution of team {team} for problem {problem}"
msgstr "Solution de l'équipe {team} pour le problème {problem}" msgstr "Solution de l'équipe {team} pour le problème {problem}"
#: participation/models.py:609 #: participation/models.py:617
msgid "for final" msgid "for final"
msgstr "pour la finale" msgstr "pour la finale"
#: participation/models.py:612 #: participation/models.py:620
msgid "solution" msgid "solution"
msgstr "solution" msgstr "solution"
#: participation/models.py:613 #: participation/models.py:621
msgid "solutions" msgid "solutions"
msgstr "solutions" msgstr "solutions"
#: participation/models.py:646 #: participation/models.py:654
#, python-brace-format #, python-brace-format
msgid "Synthesis of {team} as {type} for problem {problem} of {defender}" msgid "Synthesis of {team} as {type} for problem {problem} of {defender}"
msgstr "" msgstr ""
"Note de synthèse de l'équipe {team} en tant que {type} pour le problème " "Note de synthèse de l'équipe {team} en tant que {type} pour le problème "
"{problem} de {defender}" "{problem} de {defender}"
#: participation/models.py:654 #: participation/models.py:662
msgid "synthesis" msgid "synthesis"
msgstr "note de synthèse" msgstr "note de synthèse"
#: participation/models.py:655 #: participation/models.py:663
msgid "syntheses" msgid "syntheses"
msgstr "notes de synthèse" msgstr "notes de synthèse"
#: participation/models.py:664 #: participation/models.py:672
msgid "jury" msgid "jury"
msgstr "jury" msgstr "jury"
#: participation/models.py:676 #: participation/models.py:684
msgid "defender writing note" msgid "defender writing note"
msgstr "note d'écrit de læ défenseur⋅se" msgstr "note d'écrit de læ défenseur⋅se"
#: participation/models.py:682 #: participation/models.py:690
msgid "defender oral note" msgid "defender oral note"
msgstr "note d'oral de læ défenseur⋅se" msgstr "note d'oral de læ défenseur⋅se"
#: participation/models.py:688 #: participation/models.py:696
msgid "opponent writing note" msgid "opponent writing note"
msgstr "note d'écrit de l'opposant⋅e" msgstr "note d'écrit de l'opposant⋅e"
#: participation/models.py:694 #: participation/models.py:702
msgid "opponent oral note" msgid "opponent oral note"
msgstr "note d'oral de l'opposant⋅e" msgstr "note d'oral de l'opposant⋅e"
#: participation/models.py:700 #: participation/models.py:708
msgid "reporter writing note" msgid "reporter writing note"
msgstr "note d'écrit de læ rapporteur⋅e" msgstr "note d'écrit de læ rapporteur⋅e"
#: participation/models.py:706 #: participation/models.py:714
msgid "reporter oral note" msgid "reporter oral note"
msgstr "note d'oral de læ rapporteur⋅e" msgstr "note d'oral de læ rapporteur⋅e"
#: participation/models.py:724 #: participation/models.py:732
#, python-brace-format #, python-brace-format
msgid "Notes of {jury} for {passage}" msgid "Notes of {jury} for {passage}"
msgstr "Notes de {jury} pour le {passage}" msgstr "Notes de {jury} pour le {passage}"
#: participation/models.py:731 #: participation/models.py:739
msgid "note" msgid "note"
msgstr "note" msgstr "note"
#: participation/models.py:732 #: participation/models.py:740
msgid "notes" msgid "notes"
msgstr "notes" msgstr "notes"
@ -907,9 +911,9 @@ msgid "Join"
msgstr "Rejoindre" msgstr "Rejoindre"
#: participation/templates/participation/note_form.html:11 #: participation/templates/participation/note_form.html:11
#: participation/templates/participation/passage_detail.html:46 #: participation/templates/participation/passage_detail.html:49
#: participation/templates/participation/passage_detail.html:102 #: participation/templates/participation/passage_detail.html:105
#: participation/templates/participation/passage_detail.html:108 #: participation/templates/participation/passage_detail.html:111
#: participation/templates/participation/pool_add_jurys.html:35 #: participation/templates/participation/pool_add_jurys.html:35
#: participation/templates/participation/pool_detail.html:88 #: participation/templates/participation/pool_detail.html:88
#: participation/templates/participation/pool_detail.html:106 #: participation/templates/participation/pool_detail.html:106
@ -976,7 +980,7 @@ msgid "Upload solution"
msgstr "Envoyer une solution" msgstr "Envoyer une solution"
#: participation/templates/participation/participation_detail.html:59 #: participation/templates/participation/participation_detail.html:59
#: participation/templates/participation/passage_detail.html:114 #: participation/templates/participation/passage_detail.html:117
#: participation/templates/participation/pool_detail.html:116 #: participation/templates/participation/pool_detail.html:116
#: participation/templates/participation/team_detail.html:185 #: participation/templates/participation/team_detail.html:185
#: participation/templates/participation/upload_motivation_letter.html:13 #: participation/templates/participation/upload_motivation_letter.html:13
@ -1000,84 +1004,88 @@ msgid "Pool:"
msgstr "Poule :" msgstr "Poule :"
#: participation/templates/participation/passage_detail.html:16 #: participation/templates/participation/passage_detail.html:16
msgid "Position:"
msgstr "Position :"
#: participation/templates/participation/passage_detail.html:19
msgid "Defender:" msgid "Defender:"
msgstr "Défenseur⋅se :" msgstr "Défenseur⋅se :"
#: participation/templates/participation/passage_detail.html:19 #: participation/templates/participation/passage_detail.html:22
msgid "Opponent:" msgid "Opponent:"
msgstr "Opposant⋅e :" msgstr "Opposant⋅e :"
#: participation/templates/participation/passage_detail.html:22 #: participation/templates/participation/passage_detail.html:25
msgid "Reporter:" msgid "Reporter:"
msgstr "Rapporteur⋅e :" msgstr "Rapporteur⋅e :"
#: participation/templates/participation/passage_detail.html:25 #: participation/templates/participation/passage_detail.html:28
msgid "Defended solution:" msgid "Defended solution:"
msgstr "Solution défendue" msgstr "Solution défendue"
#: participation/templates/participation/passage_detail.html:28 #: participation/templates/participation/passage_detail.html:31
msgid "Defender penalties count:" msgid "Defender penalties count:"
msgstr "Nombre de pénalités :" msgstr "Nombre de pénalités :"
#: participation/templates/participation/passage_detail.html:31 #: participation/templates/participation/passage_detail.html:34
msgid "Syntheses:" msgid "Syntheses:"
msgstr "Notes de synthèse :" msgstr "Notes de synthèse :"
#: participation/templates/participation/passage_detail.html:36 #: participation/templates/participation/passage_detail.html:39
msgid "No synthesis was uploaded yet." msgid "No synthesis was uploaded yet."
msgstr "Aucune note de synthèse n'a encore été envoyée." msgstr "Aucune note de synthèse n'a encore été envoyée."
#: participation/templates/participation/passage_detail.html:44 #: participation/templates/participation/passage_detail.html:47
#: participation/templates/participation/passage_detail.html:107 #: participation/templates/participation/passage_detail.html:110
msgid "Update notes" msgid "Update notes"
msgstr "Modifier les notes" msgstr "Modifier les notes"
#: participation/templates/participation/passage_detail.html:50 #: participation/templates/participation/passage_detail.html:53
#: participation/templates/participation/passage_detail.html:113 #: participation/templates/participation/passage_detail.html:116
msgid "Upload synthesis" msgid "Upload synthesis"
msgstr "Envoyer une note de synthèse" msgstr "Envoyer une note de synthèse"
#: participation/templates/participation/passage_detail.html:58 #: participation/templates/participation/passage_detail.html:61
msgid "Notes detail" msgid "Notes detail"
msgstr "Détails des notes" msgstr "Détails des notes"
#: participation/templates/participation/passage_detail.html:65 #: participation/templates/participation/passage_detail.html:68
msgid "Average points for the defender writing:" msgid "Average points for the defender writing:"
msgstr "Moyenne de l'écrit de læ défenseur⋅se :" msgstr "Moyenne de l'écrit de læ défenseur⋅se :"
#: participation/templates/participation/passage_detail.html:68 #: participation/templates/participation/passage_detail.html:71
msgid "Average points for the defender oral:" msgid "Average points for the defender oral:"
msgstr "Moyenne de l'oral de læ défenseur⋅se :" msgstr "Moyenne de l'oral de læ défenseur⋅se :"
#: participation/templates/participation/passage_detail.html:71 #: participation/templates/participation/passage_detail.html:74
msgid "Average points for the opponent writing:" msgid "Average points for the opponent writing:"
msgstr "Moyenne de l'écrit de l'opposant⋅e :" msgstr "Moyenne de l'écrit de l'opposant⋅e :"
#: participation/templates/participation/passage_detail.html:74 #: participation/templates/participation/passage_detail.html:77
msgid "Average points for the opponent oral:" msgid "Average points for the opponent oral:"
msgstr "Moyenne de l'oral de l'opposant⋅e :" msgstr "Moyenne de l'oral de l'opposant⋅e :"
#: participation/templates/participation/passage_detail.html:77 #: participation/templates/participation/passage_detail.html:80
msgid "Average points for the reporter writing:" msgid "Average points for the reporter writing:"
msgstr "Moyenne de l'écrit de læ rapporteur⋅e :" msgstr "Moyenne de l'écrit de læ rapporteur⋅e :"
#: participation/templates/participation/passage_detail.html:80 #: participation/templates/participation/passage_detail.html:83
msgid "Average points for the reporter oral:" msgid "Average points for the reporter oral:"
msgstr "Moyenne de l'oral de læ rapporteur⋅e :" msgstr "Moyenne de l'oral de læ rapporteur⋅e :"
#: participation/templates/participation/passage_detail.html:87 #: participation/templates/participation/passage_detail.html:90
msgid "Defender points:" msgid "Defender points:"
msgstr "Points de læ défenseur⋅se :" msgstr "Points de læ défenseur⋅se :"
#: participation/templates/participation/passage_detail.html:90 #: participation/templates/participation/passage_detail.html:93
msgid "Opponent points:" msgid "Opponent points:"
msgstr "Points de l'opposant⋅e :" msgstr "Points de l'opposant⋅e :"
#: participation/templates/participation/passage_detail.html:93 #: participation/templates/participation/passage_detail.html:96
msgid "Reporter points:" msgid "Reporter points:"
msgstr "Points de læ rapporteur⋅e :" msgstr "Points de læ rapporteur⋅e :"
#: participation/templates/participation/passage_detail.html:101 #: participation/templates/participation/passage_detail.html:104
#: participation/templates/participation/passage_form.html:11 #: participation/templates/participation/passage_form.html:11
msgid "Update passage" msgid "Update passage"
msgstr "Modifier le passage" msgstr "Modifier le passage"

View File

@ -323,7 +323,7 @@ class PassageForm(forms.ModelForm):
class Meta: class Meta:
model = Passage model = Passage
fields = ('solution_number', 'defender', 'opponent', 'reporter', 'defender_penalties',) fields = ('position', 'solution_number', 'defender', 'opponent', 'reporter', 'defender_penalties',)
class SynthesisForm(forms.ModelForm): class SynthesisForm(forms.ModelForm):

View File

@ -0,0 +1,44 @@
# Generated by Django 4.2 on 2023-04-06 22:05
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("participation", "0005_alter_team_options"),
]
operations = [
migrations.AlterModelOptions(
name="passage",
options={
"ordering": ("pool", "position"),
"verbose_name": "passage",
"verbose_name_plural": "passages",
},
),
migrations.AddField(
model_name="passage",
name="position",
field=models.PositiveSmallIntegerField(
choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)],
default=1,
validators=[
django.core.validators.MinValueValidator(1),
django.core.validators.MaxValueValidator(5),
],
verbose_name="position",
),
),
migrations.AlterField(
model_name="participation",
name="valid",
field=models.BooleanField(
default=None,
help_text="The participation got the validation of the organizers.",
null=True,
verbose_name="valid team",
),
),
]

View File

@ -6,7 +6,7 @@ import os
from django.conf import settings from django.conf import settings
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator from django.core.validators import MaxValueValidator, MinValueValidator, RegexValidator
from django.db import models from django.db import models
from django.db.models import Index from django.db.models import Index
from django.urls import reverse_lazy from django.urls import reverse_lazy
@ -431,6 +431,13 @@ class Passage(models.Model):
related_name="passages", related_name="passages",
) )
position = models.PositiveSmallIntegerField(
verbose_name=_("position"),
choices=zip(range(1, 6), range(1, 6)),
default=1,
validators=[MinValueValidator(1), MaxValueValidator(5)],
)
solution_number = models.PositiveSmallIntegerField( solution_number = models.PositiveSmallIntegerField(
verbose_name=_("defended solution"), verbose_name=_("defended solution"),
choices=[ choices=[
@ -539,6 +546,7 @@ class Passage(models.Model):
class Meta: class Meta:
verbose_name = _("passage") verbose_name = _("passage")
verbose_name_plural = _("passages") verbose_name_plural = _("passages")
ordering = ('pool', 'position',)
class Tweak(models.Model): class Tweak(models.Model):

View File

@ -13,6 +13,9 @@
<dt class="col-sm-3">{% trans "Pool:" %}</dt> <dt class="col-sm-3">{% trans "Pool:" %}</dt>
<dd class="col-sm-9"><a href="{{ passage.pool.get_absolute_url }}">{{ passage.pool }}</a></dd> <dd class="col-sm-9"><a href="{{ passage.pool.get_absolute_url }}">{{ passage.pool }}</a></dd>
<dt class="col-sm-3">{% trans "Position:" %}</dt>
<dd class="col-sm-9">{{ passage.position }}</dd>
<dt class="col-sm-3">{% trans "Defender:" %}</dt> <dt class="col-sm-3">{% trans "Defender:" %}</dt>
<dd class="col-sm-9"><a href="{{ passage.defender.get_absolute_url }}">{{ passage.defender.team }}</a></dd> <dd class="col-sm-9"><a href="{{ passage.defender.get_absolute_url }}">{{ passage.defender.team }}</a></dd>

View File

@ -0,0 +1,19 @@
# Generated by Django 4.2 on 2023-04-06 22:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("registration", "0007_alter_participantregistration_options_and_more"),
]
operations = [
migrations.AlterField(
model_name="payment",
name="valid",
field=models.BooleanField(
default=False, null=True, verbose_name="payment valid"
),
),
]