Send email after team final selection

Signed-off-by: Emmy D'Anello <emmy.danello@animath.fr>
This commit is contained in:
Emmy D'Anello 2024-04-07 13:39:44 +02:00
parent 7073f64aa6
commit 7a0b93b151
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
5 changed files with 249 additions and 104 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-07 12:35+0200\n"
"POT-Creation-Date: 2024-04-07 13:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Emmy D'Anello <emmy.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -31,7 +31,7 @@ msgstr "équipes"
#: participation/admin.py:79 participation/admin.py:140
#: participation/admin.py:171 participation/models.py:656
#: participation/models.py:680 participation/models.py:886
#: registration/models.py:722
#: registration/models.py:748
#: registration/templates/registration/payment_form.html:53
msgid "tournament"
msgstr "tournoi"
@ -334,7 +334,7 @@ msgstr "Continuer le tirage"
#: draw/templates/draw/tournament_content.html:216 participation/admin.py:167
#: participation/models.py:252 participation/models.py:671
#: participation/templates/participation/tournament_harmonize.html:15
#: registration/models.py:157 registration/models.py:713
#: registration/models.py:157 registration/models.py:739
#: registration/tables.py:39
#: registration/templates/registration/payment_form.html:52
msgid "team"
@ -720,7 +720,7 @@ msgstr ""
"L'équipe {trigram} n'a pas encore été validée par les organisateurices. "
"Merci de patienter."
#: participation/models.py:196 registration/models.py:541
#: participation/models.py:196 registration/models.py:567
msgid "Pending validation"
msgstr "Validation en attente"
@ -864,12 +864,12 @@ msgid ""
"<a href='{url}'>your participation page</a>.</p>"
msgstr ""
"<p>Les solutions pour le tournoi de {tournament} sont attendues pour le "
"{date:%d/%m/%Y %H:%M}.</p><p>N'oubliez pas que vous pouvez seulement apporter "
"des corrections mineures à vos solutions sans ajouter de nouvelles parties.</p>"
"<p>Vous pouvez envoyer vos solutions sur <a href='{url}'>votre page de "
"participation</a>.</p>"
"{date:%d/%m/%Y %H:%M}.</p><p>N'oubliez pas que vous pouvez seulement "
"apporter des corrections mineures à vos solutions sans ajouter de nouvelles "
"parties.</p><p>Vous pouvez envoyer vos solutions sur <a href='{url}'>votre "
"page de participation</a>.</p>"
#: participation/models.py:762 registration/models.py:566
#: participation/models.py:762 registration/models.py:592
msgid ""
"<p>The draw of the solutions for the tournament {tournament} is planned on "
"the {date:%Y-%m-%d %H:%M}. You can join it on <a href='{url}'>this link</a>."
@ -879,7 +879,7 @@ msgstr ""
"{date:%d/%m/%Y %H:%M}. Vous pouvez y participer sur <a href='{url}'>ce lien</"
"a>.</p>"
#: participation/models.py:768 registration/models.py:573
#: participation/models.py:768 registration/models.py:599
msgid "Draw of solutions"
msgstr "Tirage au sort des solutions"
@ -917,7 +917,7 @@ msgstr ""
"href='{solution_url}'>problème {problem}</a>. Vous pouvez envoyer votre note "
"de synthèse sur <a href='{passage_url}'>cette page</a>.</p>"
#: participation/models.py:813 registration/models.py:588
#: participation/models.py:813 registration/models.py:614
msgid "First round"
msgstr "Premier tour"
@ -930,7 +930,7 @@ msgstr ""
"<p>Pour le second tour, vous défendrez <a href='{solution_url}'>votre "
"solution du problème {problem}</a>.</p>"
#: participation/models.py:856 registration/models.py:599
#: participation/models.py:856 registration/models.py:625
msgid "Second round"
msgstr "Second tour"
@ -1623,7 +1623,7 @@ msgid "Payment of"
msgstr "Paiement de"
#: participation/templates/participation/team_detail.html:160
#: registration/models.py:643
#: registration/models.py:669
msgid "grouped"
msgstr "groupé"
@ -1826,7 +1826,7 @@ msgid "Rank"
msgstr "Rang"
#: participation/templates/participation/tournament_harmonize.html:16
#: registration/models.py:614
#: registration/models.py:640
msgid "Note"
msgstr "Note"
@ -2010,88 +2010,88 @@ msgstr "Notes dissimulées !"
msgid "Harmonize notes of {tournament} - Day {round}"
msgstr "Harmoniser les notes de {tournament} - Jour {round}"
#: participation/views.py:885
#: participation/views.py:893
msgid "You can't upload a solution after the deadline."
msgstr "Vous ne pouvez pas envoyer de solution après la date limite."
#: participation/views.py:1002
#: participation/views.py:1010
#, python-brace-format
msgid "Solutions of team {trigram}.zip"
msgstr "Solutions de l'équipe {trigram}.zip"
#: participation/views.py:1002
#: participation/views.py:1010
#, python-brace-format
msgid "Syntheses of team {trigram}.zip"
msgstr "Notes de synthèse de l'équipe {trigram}.zip"
#: participation/views.py:1019 participation/views.py:1034
#: participation/views.py:1027 participation/views.py:1042
#, python-brace-format
msgid "Solutions of {tournament}.zip"
msgstr "Solutions de {tournament}.zip"
#: participation/views.py:1019 participation/views.py:1034
#: participation/views.py:1027 participation/views.py:1042
#, python-brace-format
msgid "Syntheses of {tournament}.zip"
msgstr "Notes de synthèse de {tournament}.zip"
#: participation/views.py:1043
#: participation/views.py:1051
#, python-brace-format
msgid "Solutions for pool {pool} of tournament {tournament}.zip"
msgstr "Solutions pour la poule {pool} du tournoi {tournament}.zip"
#: participation/views.py:1044
#: participation/views.py:1052
#, python-brace-format
msgid "Syntheses for pool {pool} of tournament {tournament}.zip"
msgstr "Notes de synthèses pour la poule {pool} du tournoi {tournament}.zip"
#: participation/views.py:1086
#: participation/views.py:1094
#, python-brace-format
msgid "Jury of pool {pool} for {tournament} with teams {teams}"
msgstr "Jury de la poule {pool} pour {tournament} avec les équipes {teams}"
#: participation/views.py:1102
#: participation/views.py:1110
#, python-brace-format
msgid "The jury {name} is already in the pool!"
msgstr "{name} est déjà dans la poule !"
#: participation/views.py:1122
#: participation/views.py:1130
msgid "New TFJM² jury account"
msgstr "Nouveau compte de juré⋅e pour le TFJM²"
#: participation/views.py:1143
#: participation/views.py:1151
#, python-brace-format
msgid "The jury {name} has been successfully added!"
msgstr "{name} a été ajouté⋅e avec succès en tant que juré⋅e !"
#: participation/views.py:1179
#: participation/views.py:1187
#, python-brace-format
msgid "The jury {name} has been successfully removed!"
msgstr "{name} a été retiré⋅e avec succès du jury !"
#: participation/views.py:1205
#: participation/views.py:1213
#, python-brace-format
msgid "The jury {name} has been successfully promoted president!"
msgstr "{name} a été nommé⋅e président⋅e du jury !"
#: participation/views.py:1233
#: participation/views.py:1241
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 :"
#: participation/views.py:1250
#: participation/views.py:1258
msgid "Notes were successfully uploaded."
msgstr "Les notes ont bien été envoyées."
#: participation/views.py:1883
#: participation/views.py:1891
#, python-brace-format
msgid "Notation sheets of pool {pool} of {tournament}.zip"
msgstr "Feuilles de notations pour la poule {pool} du tournoi {tournament}.zip"
#: participation/views.py:1888
#: participation/views.py:1896
#, python-brace-format
msgid "Notation sheets of {tournament}.zip"
msgstr "Feuilles de notation de {tournament}.zip"
#: participation/views.py:2065
#: participation/views.py:2073
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."
@ -2130,7 +2130,7 @@ msgstr "rôle"
msgid "participant"
msgstr "participant⋅e"
#: registration/forms.py:25 registration/models.py:475
#: registration/forms.py:25 registration/models.py:501
msgid "coach"
msgstr "encadrant⋅e"
@ -2174,7 +2174,7 @@ msgstr ""
msgid "registration"
msgstr "inscription"
#: registration/models.py:130 registration/models.py:639
#: registration/models.py:130 registration/models.py:665
msgid "registrations"
msgstr "inscriptions"
@ -2284,71 +2284,75 @@ msgstr ""
"Vous n'avez pas envoyé votre autorisation de droit à l'image pour la finale. "
"Vous pouvez le faire en cliquant sur <a href=\"{photo_url}\">ce lien</a>."
#: registration/models.py:293
#: registration/models.py:297
msgid "Team selected for the final tournament"
msgstr "Équipe sélectionnée pour la finale"
#: registration/models.py:319
msgid "participant registration"
msgstr "inscription de participant⋅e"
#: registration/models.py:294
#: registration/models.py:320
msgid "participant registrations"
msgstr "inscriptions de participant⋅es"
#: registration/models.py:303
#: registration/models.py:329
msgid "birth date"
msgstr "date de naissance"
#: registration/models.py:309
#: registration/models.py:335
msgid "12th grade"
msgstr "Terminale"
#: registration/models.py:310
#: registration/models.py:336
msgid "11th grade"
msgstr "Première"
#: registration/models.py:311
#: registration/models.py:337
msgid "10th grade or lower"
msgstr "Seconde ou inférieur"
#: registration/models.py:313
#: registration/models.py:339
msgid "student class"
msgstr "classe"
#: registration/models.py:318
#: registration/models.py:344
msgid "school"
msgstr "école"
#: registration/models.py:323
#: registration/models.py:349
msgid "responsible name"
msgstr "nom d'un⋅e responsable légal⋅e"
#: registration/models.py:328
#: registration/models.py:354
msgid "responsible phone number"
msgstr "numéro de téléphone d'un⋅e responsable légal⋅e"
#: registration/models.py:333
#: registration/models.py:359
msgid "responsible email address"
msgstr "adresse e-mail d'un⋅e responsable légal⋅e"
#: registration/models.py:338
#: registration/models.py:364
msgid "parental authorization"
msgstr "autorisation parentale"
#: registration/models.py:345
#: registration/models.py:371
msgid "parental authorization (final)"
msgstr "autorisation parentale (finale)"
#: registration/models.py:352
#: registration/models.py:378
msgid "health sheet"
msgstr "fiche sanitaire"
#: registration/models.py:359
#: registration/models.py:385
msgid "vaccine sheet"
msgstr "carnet de vaccination"
#: registration/models.py:367
#: registration/models.py:393
msgid "student"
msgstr "élève"
#: registration/models.py:378
#: registration/models.py:404
#, python-brace-format
msgid ""
"You have not uploaded your parental authorization. You can do it by clicking "
@ -2357,11 +2361,11 @@ msgstr ""
"Vous n'avez pas envoyé votre autorisation parentale. Vous pouvez le faire en "
"cliquant sur <a href=\"{parental_url}\">ce lien</a>."
#: registration/models.py:383 registration/models.py:443
#: registration/models.py:409 registration/models.py:469
msgid "Parental authorization"
msgstr "Autorisation parentale"
#: registration/models.py:389
#: registration/models.py:415
#, python-brace-format
msgid ""
"You have not uploaded your health sheet. You can do it by clicking on <a "
@ -2370,11 +2374,11 @@ msgstr ""
"Vous n'avez pas envoyé votre fiche sanitaire. Vous pouvez le faire en "
"cliquant sur <a href=\"{health_url}\">ce lien</a>."
#: registration/models.py:394
#: registration/models.py:420
msgid "Health sheet"
msgstr "Fiche sanitaire"
#: registration/models.py:400
#: registration/models.py:426
#, python-brace-format
msgid ""
"You have not uploaded your vaccine sheet. You can do it by clicking on <a "
@ -2383,11 +2387,11 @@ msgstr ""
"Vous n'avez pas envoyé votre carnet de vaccination. Vous pouvez le faire en "
"cliquant sur <a href=\"{vaccine_url}\">ce lien</a>."
#: registration/models.py:405
#: registration/models.py:431
msgid "Vaccine sheet"
msgstr "Carnet de vaccination"
#: registration/models.py:414
#: registration/models.py:440
#, python-brace-format
msgid ""
"You have to pay {amount} € for your registration, or send a scholarship "
@ -2398,15 +2402,15 @@ msgstr ""
"notification de bourse ou un justificatif de paiement. Vous pouvez le faire "
"sur <a href=\"{url}\">la page de paiement</a>."
#: registration/models.py:420 registration/models.py:429
#: registration/models.py:446 registration/models.py:455
msgid "Payment"
msgstr "Paiement"
#: registration/models.py:426
#: registration/models.py:452
msgid "Your payment is under approval."
msgstr "Votre paiement est en cours de validation."
#: registration/models.py:437
#: registration/models.py:463
#, python-brace-format
msgid ""
"You have not uploaded your parental authorization for the final tournament. "
@ -2415,19 +2419,19 @@ msgstr ""
"Vous n'avez pas envoyé votre autorisation parentale pour la finale. Vous "
"pouvez le faire en cliquant sur <a href=\"{parental_url}\">ce lien</a>."
#: registration/models.py:452
#: registration/models.py:478
msgid "student registration"
msgstr "inscription d'élève"
#: registration/models.py:453
#: registration/models.py:479
msgid "student registrations"
msgstr "inscriptions d'élève"
#: registration/models.py:464
#: registration/models.py:490
msgid "most recent degree in mathematics, computer science or physics"
msgstr "Dernier diplôme obtenu en mathématiques, informatique ou physique"
#: registration/models.py:465
#: registration/models.py:491
msgid ""
"Your most recent degree in maths, computer science or physics, or your last "
"entrance exam (CAPES, Agrégation,…)"
@ -2435,23 +2439,23 @@ msgstr ""
"Votre dernier diplôme en mathématiques, informatique ou physique, ou votre "
"dernier concours obtenu (CAPES, Agrégation, …)"
#: registration/models.py:470 registration/models.py:492
#: registration/models.py:496 registration/models.py:518
msgid "professional activity"
msgstr "activité professionnelle"
#: registration/models.py:483
#: registration/models.py:509
msgid "coach registration"
msgstr "inscription d'encadrant⋅e"
#: registration/models.py:484
#: registration/models.py:510
msgid "coach registrations"
msgstr "inscriptions d'encadrant⋅es"
#: registration/models.py:496
#: registration/models.py:522
msgid "administrator"
msgstr "administrateur⋅rice"
#: registration/models.py:497
#: registration/models.py:523
msgid ""
"An administrator has all rights. Please don't give this right to all juries "
"and volunteers."
@ -2459,15 +2463,15 @@ msgstr ""
"Un⋅e administrateur⋅rice a tous les droits. Merci de ne pas donner ce droit "
"à toustes les juré⋅es et bénévoles."
#: registration/models.py:507
#: registration/models.py:533
msgid "admin"
msgstr "admin"
#: registration/models.py:507
#: registration/models.py:533
msgid "volunteer"
msgstr "bénévole"
#: registration/models.py:520
#: registration/models.py:546
msgid ""
"Registrations for tournament {tournament} are closing on {date:%Y-%m-%d %H:"
"%M}. There are for now {validated_teams} validated teams (+ {pending_teams} "
@ -2477,11 +2481,11 @@ msgstr ""
"%M}. Il y a pour l'instant {validated_teams} équipes validées (+ "
"{pending_teams} en attente) sur {max_teams} attendues."
#: registration/models.py:528
#: registration/models.py:554
msgid "Registrations"
msgstr "Inscriptions"
#: registration/models.py:535
#: registration/models.py:561
#, python-brace-format
msgid ""
"The team {trigram} requested to be validated for the tournament of "
@ -2492,7 +2496,7 @@ msgstr ""
"Vous pouvez vérifier le statut de l'équipe sur la <a href=\"{url}\">page de "
"l'équipe</a>."
#: registration/models.py:552
#: registration/models.py:578
#, python-brace-format
msgid ""
"There are {valid} validated payments, {pending} pending and {invalid} "
@ -2503,11 +2507,11 @@ msgstr ""
"invalides pour le tournoi {tournament}. Vous pouvez vérifier le statut des "
"paiements sur la <a href=\"{url}\">liste des paiements</a>."
#: registration/models.py:559
#: registration/models.py:585
msgid "Payments"
msgstr "Paiements"
#: registration/models.py:583 registration/models.py:594
#: registration/models.py:609 registration/models.py:620
#, python-brace-format
msgid ""
"<p>You are in the jury of the pool {pool} for the tournament of "
@ -2516,7 +2520,7 @@ msgstr ""
"<p>Vous êtes dans le jury de la poule {pool} pour le tournoi {tournament}. "
"Vous pouvez trouver la page de la poule <a href='{pool_url}'>ici</a>.</p>"
#: registration/models.py:607
#: registration/models.py:633
#, python-brace-format
msgid ""
"<p>You don't have given any note as a jury for the passage {passage} in the "
@ -2527,15 +2531,15 @@ msgstr ""
"{passage} dans la poule {pool} de {tournament}. Vous pouvez donner vos notes "
"<a href='{passage_url}'>ici</a>.</p>"
#: registration/models.py:623
#: registration/models.py:649
msgid "volunteer registration"
msgstr "inscription de bénévole"
#: registration/models.py:624
#: registration/models.py:650
msgid "volunteer registrations"
msgstr "inscriptions de bénévoles"
#: registration/models.py:645
#: registration/models.py:671
msgid ""
"If set to true, then one payment is made for the full team, for example if "
"the school pays for all."
@ -2543,100 +2547,100 @@ msgstr ""
"Si vrai, alors un seul paiement est fait pour toute l'équipe, par exemple si "
"le lycée paie pour tout le monde."
#: registration/models.py:650
#: registration/models.py:676
msgid "total amount"
msgstr "montant total"
#: registration/models.py:651
#: registration/models.py:677
msgid "Corresponds to the total required amount to pay, in euros."
msgstr "Correspond au montant total à payer, en euros."
#: registration/models.py:656
#: registration/models.py:682
msgid "token"
msgstr "jeton"
#: registration/models.py:659
#: registration/models.py:685
msgid "A token to authorize external users to make this payment."
msgstr "Un jeton pour autoriser des utilisateurs externes à faire ce paiement."
#: registration/models.py:663
#: registration/models.py:689
msgid "for final tournament"
msgstr "pour la finale"
#: registration/models.py:668
#: registration/models.py:694
msgid "type"
msgstr "type"
#: registration/models.py:671
#: registration/models.py:697
msgid "No payment"
msgstr "Pas de paiement"
#: registration/models.py:672
#: registration/models.py:698
#: registration/templates/registration/payment_form.html:72
msgid "Credit card"
msgstr "Carte bancaire"
#: registration/models.py:673
#: registration/models.py:699
msgid "Scholarship"
msgstr "Notification de bourse"
#: registration/models.py:674
#: registration/models.py:700
#: registration/templates/registration/payment_form.html:77
msgid "Bank transfer"
msgstr "Virement bancaire"
#: registration/models.py:675
#: registration/models.py:701
msgid "Other (please indicate)"
msgstr "Autre (veuillez spécifier)"
#: registration/models.py:676
#: registration/models.py:702
msgid "The tournament is free"
msgstr "Le tournoi est gratuit"
#: registration/models.py:683
#: registration/models.py:709
msgid "Hello Asso checkout intent ID"
msgstr "ID de l'intention de paiement Hello Asso"
#: registration/models.py:690
#: registration/models.py:716
msgid "receipt"
msgstr "justificatif"
#: registration/models.py:691
#: registration/models.py:717
msgid "only if you have a scholarship or if you chose a bank transfer."
msgstr ""
"Nécessaire seulement si vous déclarez être boursièr⋅e ou si vous payez par "
"virement bancaire."
#: registration/models.py:698
#: registration/models.py:724
msgid "additional information"
msgstr "informations additionnelles"
#: registration/models.py:699
#: registration/models.py:725
msgid "To help us to find your payment."
msgstr "Pour nous aider à retrouver votre paiement, si nécessaire."
#: registration/models.py:705
#: registration/models.py:731
msgid "payment valid"
msgstr "paiement valide"
#: registration/models.py:765
#: registration/models.py:791
msgid "Reminder for your payment"
msgstr "Rappel pour votre paiement"
#: registration/models.py:776
#: registration/models.py:802
msgid "Payment confirmation"
msgstr "Confirmation de paiement"
#: registration/models.py:798
#: registration/models.py:824
#, python-brace-format
msgid "Payment of {registrations}"
msgstr "Paiements de {registrations}"
#: registration/models.py:801
#: registration/models.py:827
msgid "payment"
msgstr "paiement"
#: registration/models.py:802
#: registration/models.py:828
msgid "payments"
msgstr "paiements"

View File

@ -856,6 +856,8 @@ class SelectTeamFinalView(VolunteerMixin, DetailView):
final_sol: Solution
with open(regional_sol.file.path, 'rb') as f:
final_sol.file.save(regional_sol.file.name, f)
for registration in self.participation.team.participants:
registration.send_email_final_selection()
return redirect(reverse_lazy("participation:tournament_detail", args=(tournament.pk,)))

View File

@ -289,6 +289,32 @@ class ParticipantRegistration(Registration):
return informations
def send_email_final_selection(self):
"""
The team is selected for final.
"""
translation.activate('fr')
subject = "[TFJM²] " + str(_("Team selected for the final tournament"))
site = Site.objects.first()
from participation.models import Tournament
tournament = Tournament.final_tournament()
payment = self.payments.filter(final=True).first() if self.is_student else None
message = loader.render_to_string('registration/mails/final_selection.txt',
{
'user': self.user,
'domain': site.domain,
'tournament': tournament,
'payment': payment,
})
html = loader.render_to_string('registration/mails/final_selection.html',
{
'user': self.user,
'domain': site.domain,
'tournament': tournament,
'payment': payment,
})
self.user.email_user(subject, message, html_message=html)
class Meta:
verbose_name = _("participant registration")
verbose_name_plural = _("participant registrations")

View File

@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<p>
Bonjour {{ user.registration }},
</p>
<p>
Félicitations ! Votre équipe {{ user.registration.team.name }} ({{ user.registration.team.trigram }})
est sélectionnée pour le tournoi final du TFJM² !
</p>
<p>
La finale aura lieu du {{ tournament.date_start|date:"d/m/Y" }} au {{ tournament.date_end|date:"d/m/Y" }}
à : {{ tournament.place }}.
Les organisateurices de la finale vous recontacteront pour plus de détails.
</p>
<p>
D'ores-et-déjà, vous pouvez soumettre votre autorisation de droit à l'image spécifique à la finale sur votre espace personnel :
<a href="https://{{ domain }}{% url 'registration:user_detail' pk=user.pk %}">
https://{{ domain }}{% url 'registration:user_detail' pk=user.pk %}
</a>.
{% if user.registration.is_student and user.registration.under_18_final %}
Vous pouvez également transmettre puisque vous êtes mineur⋅e votre autorisation parentale spécifique pour la finale sur la même page.
{% endif %}
</p>
<p>
{% if tournament.price > 0 %}
{% if user.registration.is_student %}
{% if payment.type == "scholarship" %}
Votre statut de boursièr⋅e déjà enregistré vous exempte à nouveau des frais de participation de la finale.
{% else %}
Vous devez régler les frais de participation à la finale de {{ tournament.price }} €.
Rendez-vous pour cela sur la page du paiement :
<a href="https://{{ domain }}{% url 'registration:update_payment' pk=payment.pk %}">
https://{{ domain }}{% url 'registration:update_payment' pk=payment.pk %}
</a>.
{% endif %}
{% else %}
En tant qu'encadrant⋅e, vous n'avez toujours rien à payer, mais veillez bien à ce que les membres de votre équipe
règlent les frais de participation à la finale de {{ tournament.price }} €.
{% endif %}
{% endif %}
</p>
<p>
Conformément au règlement du TFJM², vous pouvez soumettre de nouvelles versions de vos solutions,
pour améliorer vos explications, corriger des erreurs mineures ou la mise en page, ou supprimer
des éléments faux, mais il vous est en revanche interdit d'ajouter des résultats ou des preuves
ou de corriger des erreurs majeures.
</p>
<p>
Pour mettre à jour vos solutions, rendez-vous sur la page de votre équipe :
<a href="https://{{ domain }}{% url 'participation:participation_detail' pk=user.registration.team.participation.pk %}">
https://{{ domain }}{% url 'participation:participation_detail' pk=user.registration.team.participation.pk %}
</a>.
</p>
<p>
Cordialement,
</p>
--
<p>
L'équipe du TFJM²
</p>
</body>
</html>

View File

@ -0,0 +1,38 @@
Bonjour {{ user.registration }},
Félicitations ! Votre équipe {{ user.registration.team.name }} ({{ user.registration.team.trigram }}) est sélectionnée pour le tournoi final du TFJM² !
La finale aura lieu du {{ tournament.date_start|date:"d/m/Y" }} au {{ tournament.date_end|date:"d/m/Y" }} à : {{ tournament.place }}.
Les organisateurices de la finale vous recontacteront pour plus de détails.
D'ores-et-déjà, vous pouvez soumettre votre autorisation de droit à l'image spécifique à la finale sur votre espace personnel :
https://{{ domain }}{% url 'registration:user_detail' pk=user.pk %}
{% if user.registration.is_student and user.registration.under_18_final %}
Vous pouvez également transmettre puisque vous êtes mineur⋅e votre autorisation parentale spécifique pour la finale sur la même page.
{% endif %}
{% if tournament.price > 0 %}
{% if user.registration.is_student %}
{% if payment.type == "scholarship" %}
Votre statut de boursièr⋅e déjà enregistré vous exempte à nouveau des frais de participation de la finale.
{% else %}
Vous devez régler les frais de participation à la finale de {{ tournament.price }} €.
Rendez-vous pour cela sur la page du paiement :
https://{{ domain }}{% url 'registration:update_payment' pk=payment.pk %}
{% endif %}
{% else %}
En tant qu'encadrant⋅e, vous n'avez toujours rien à payer, mais veillez bien à ce que les membres de votre équipe
règlent les frais de participation à la finale de {{ tournament.price }} €.
{% endif %}
{% endif %}
Conformément au règlement du TFJM², vous pouvez soumettre de nouvelles versions de vos solutions,
pour améliorer vos explications, corriger des erreurs mineures ou la mise en page, ou supprimer
des éléments faux, mais il vous est en revanche interdit d'ajouter des résultats ou des preuves
ou de corriger des erreurs majeures.
Pour mettre à jour vos solutions, rendez-vous sur la page de votre équipe :
https://{{ domain }}{% url 'participation:participation_detail' pk=user.registration.team.participation.pk %}
Cordialement,
--
L'équipe du TFJM²