1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-02-06 04:13:02 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Emmy D'Anello
df6fb3b3f3
Drop support of Python 3.11 2025-01-14 20:21:57 +01:00
Emmy D'Anello
3807fbcf45
Linting 2025-01-14 20:16:04 +01:00
Emmy D'Anello
8433390e19
Update authorization templates for unified registration 2025-01-14 20:14:49 +01:00
Emmy D'Anello
ec85f62ab6
Add unified registration for Île-de-France 2025-01-14 19:32:05 +01:00
Emmy D'Anello
74b2a0c095
Restauration des mails du TFJM²
This reverts commit 21d4ac9d8d7689f9ae6898e7a1411176708c164f.
2025-01-14 18:20:03 +01:00
21 changed files with 516 additions and 344 deletions

View File

@ -2,15 +2,6 @@ stages:
- test - test
- quality-assurance - quality-assurance
py311:
stage: test
image: python:3.11-alpine
before_script:
- apk add --no-cache libmagic
- apk add --no-cache gettext
- pip install tox --no-cache-dir
script: tox -e py311
py312: py312:
stage: test stage: test
image: python:3.12-alpine image: python:3.12-alpine

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ from io import StringIO
import re import re
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import Div, Field, Submit from crispy_forms.layout import Div, Field, HTML, Layout, Submit
from django import forms from django import forms
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
@ -77,9 +77,30 @@ class ParticipationForm(forms.ModelForm):
""" """
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
if settings.TFJM_APP == "ETEAM": if settings.SINGLE_TOURNAMENT:
# One single tournament only
del self.fields['tournament'] del self.fields['tournament']
self.helper = FormHelper()
idf_warning_banner = f"""
<div class=\"alert alert-warning\">
<h5 class=\"alert-heading\">{_("IMPORTANT")}</h4>
{_("""For the tournaments in the region "Île-de-France": registration is
unified for each tournament. By choosing a tournament "Île-de-France",
you're accepting that your team may be selected for one of these tournaments.
In case of date conflict, please write them in your motivation letter.""")}
</div>
"""
unified_registration_tournament_ids = ",".join(
str(tournament.id) for tournament in Tournament.objects.filter(
unified_registration=True).all())
self.helper.layout = Layout(
'tournament',
Div(
HTML(idf_warning_banner),
css_id="idf_warning_banner",
data_tid_unified=unified_registration_tournament_ids,
),
'final',
)
class Meta: class Meta:
model = Participation model = Participation

View File

@ -0,0 +1,21 @@
# Generated by Django 5.1.5 on 2025-01-14 18:06
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("participation", "0022_alter_note_observer_oral"),
]
operations = [
migrations.AddField(
model_name="tournament",
name="unified_registration",
field=models.BooleanField(
default=False, verbose_name="unified registration"
),
),
]

View File

@ -283,6 +283,11 @@ class Tournament(models.Model):
default=date.today, default=date.today,
) )
unified_registration = models.BooleanField(
verbose_name=_("unified registration"),
default=False,
)
place = models.CharField( place = models.CharField(
max_length=255, max_length=255,
verbose_name=_("place"), verbose_name=_("place"),

View File

@ -2,28 +2,28 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Validation request - ETEAM</title> <title>Demande de validation - TFJM²</title>
</head> </head>
<body> <body>
<p> <p>
Hi, Bonjour,
</p> </p>
<p> <p>
The team "{{ team.name }}" ({{ team.trigram }}) has just asked to validate his team to take part L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
in ETEAM. au {{ team.participation.get_problem_display }} du TFJM².
You can decide whether or not to accept the team by going to the team page: Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe :
<a href="https://{{ domain }}{% url "participation:team_detail" pk=team.pk %}"> <a href="https://{{ domain }}{% url "participation:team_detail" pk=team.pk %}">
https://{{ domain }}{% url "participation:team_detail" pk=team.pk %} https://{{ domain }}{% url "participation:team_detail" pk=team.pk %}
</a> </a>
</p> </p>
<p> <p>
Sincerely yours, Cordialement,
</p> </p>
<p> <p>
The ETEAM team L'organisation du TFJM²
</p> </p>
</body> </body>
</html> </html>

View File

@ -1,10 +1,10 @@
Hi {{ user }}, Bonjour {{ user }},
The team "{{ team.name }}" ({{ team.trigram }}) has just asked to validate his team to take part L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
in ETEAM. au {{ team.participation.get_problem_display }} du TFJM².
You can decide whether or not to accept the team by going to the team page: Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe :
https://{{ domain }}{% url "participation:team_detail" pk=team.pk %} https://{{ domain }}{% url "participation:team_detail" pk=team.pk %}
Sincerely yours, Cordialement,
The ETEAM team L'organisation du TFJM²

View File

@ -2,21 +2,21 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Team not validated ETEAM</title> <title>Équipe non validée TFJM²</title>
</head> </head>
<body> <body>
Hi,<br/> Bonjour,<br/>
<br /> <br />
Unfortunately, your team "{{ team.name }}" ({{ team.trigram }}) has not been validated. Maleureusement, votre équipe « {{ team.name }} » ({{ team.trigram }}) n'a pas été validée. Veuillez vérifier que vos autorisations
Please check that your authorisations are correctly filled in. de droit à l'image sont correctes. Les organisateurs vous adressent ce message :<br />
The organisers are sending you this message:<br />
<br /> <br />
{{ message }}<br /> {{ message }}<br />
<br /> <br />
Please contact us at <a href="mailto:eteam_moc@proton.me">eteam_moc@proton.me</a> if you need further information. N'hésitez pas à nous contacter à l'adresse <a href="mailto:contact@tfjm.org">contact@tfjm.org</a>
pour plus d'informations.
<br/> <br/>
Sincerely yours,<br/> Cordialement,<br/>
<br/> <br/>
The ETEAM team Le comité d'organisation du TFJM²
</body> </body>
</html> </html>

View File

@ -1,13 +1,12 @@
Hi, Bonjour,
Unfortunately, your team "{{ team.name }}" ({{ team.trigram }}) has not been validated. Maleureusement, votre équipe « {{ team.name }} » ({{ team.trigram }}) n'a pas été validée. Veuillez vérifier que vos
Please check that your authorisations are correctly filled in. autorisations de droit à l'image sont correctes. Les organisateurs vous adressent ce message :
The organisers are sending you this message:<br />
{{ message }} {{ message }}
Please contact us at eteam_moc@proton.me if you need further information. N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'informations.
Sincerely yours, Cordialement,
The ETEAM team Le comité d'organisation du TFJM²

View File

@ -2,36 +2,37 @@
<html lang="fr"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>Team validated ETEAM</title> <title>Équipe validée TFJM²</title>
</head> </head>
<body> <body>
<p> <p>
Hello {{ registration }}, Bonjour {{ registration }},
</p> </p>
<p> <p>
Congratulations! Your team "{{ team.name }}" ({{ team.trigram }}) is now validated! You are now ready to Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais
to work on your problems. You can then upload your solutions to the platform. apte à travailler sur vos problèmes. Vous pourrez ensuite envoyer vos solutions sur la plateforme.
</p> </p>
{% if payment %} {% if payment %}
<p> <p>
You must now pay your participation fee of € {{ payment.amount }}. Vous devez désormais vous acquitter de vos frais de participation, de {{ payment.amount }} € par élève.
You can pay by credit card or bank transfer. You'll find information Vous pouvez payer par carte bancaire ou par virement bancaire. Vous trouverez les informations
on the payment page which you can find on sur <a href="https://{{ domain }}{% url 'registration:update_payment' pk=payment.pk %}">la page de paiement</a>.
<a href="https://{{ domain }}{% url 'registration:my_account_detail' %}">your account</a>. Si vous disposez d'une bourse, l'inscription est gratuite, mais vous devez soumettre un justificatif
If you have a scholarship, registration is free, but you must submit a justification on the same page. sur la même page.
</p> </p>
{% elif registration.is_coach and team.participation.tournament.price %} {% elif registration.is_coach and team.participation.tournament.price %}
<p> <p>
Your team must now pay a participation fee of {{ team.participation.tournament.price }} € per student (supervisors are exempt). Students with scholarships are exempt⋅es from these fees. Votre équipe doit désormais s'acquitter des frais de participation de {{ team.participation.tournament.price }} €
You can track the status of payments on par élève (les encadrant⋅es sont exonéré⋅es). Les élèves qui disposent d'une bourse sont exonéré⋅es de ces frais.
<a href="https://{{ domain }}{% url 'participation:team_detail' pk=team.pk %}">your team page</a>. Vous pouvez suivre l'état des paiements sur
<a href="https://{{ domain }}{% url 'participation:team_detail' pk=team.pk %}">la page de votre équipe</a>.
</p> </p>
{% endif %} {% endif %}
{% if message %} {% if message %}
<p> <p>
The organisers send you this message: Les organisateur⋅ices vous adressent ce message :
</p> </p>
<p> <p>
{{ message }} {{ message }}
@ -39,7 +40,7 @@
{% endif %} {% endif %}
<p> <p>
The ETEAM team Le comité d'organisation du TFJM²
</p> </p>
</body> </body>
</html> </html>

View File

@ -1,21 +1,23 @@
Hello {{registration }}, Bonjour {{ registration }},
Congratulations! Your team "{{ team.name }}" ({{ team.trigram }}) is now validated! You are now ready to Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte
to work on your problems. You can then upload your solutions to the platform. à travailler sur vos problèmes. Vous pourrez ensuite envoyer vos solutions sur la plateforme.
{% if payment %} {% if team.participation.amount %}
You must now pay your participation fee of € {{ payment.amount }}. Vous devez désormais vous acquitter de vos frais de participation, de {{ team.participation.amount }} €.
You can pay by credit card or bank transfer. You'll find information Vous pouvez payer par carte bancaire ou par virement bancaire. Vous trouverez les informations
on the payment page which you can find on your account: sur la page de paiement que vous pouvez retrouver sur votre compte :
https://{{ domain }}{% url 'registration:my_account_detail' %} https://{{ domain }}{% url 'registration:my_account_detail' %}
If you have a scholarship, registration is free, but you must submit a justification on the same page. Si vous disposez d'une bourse, l'inscription est gratuite, mais vous devez soumettre un justificatif
sur la même page.
{% elif registration.is_coach and team.participation.tournament.price %} {% elif registration.is_coach and team.participation.tournament.price %}
Your team must now pay a participation fee of {{ team.participation.tournament.price }} € per student (supervisors are exempt). Students with scholarships are exempt⋅es from these fees. Votre équipe doit désormais s'acquitter des frais de participation de {{ team.participation.tournament.price }} €
You can track the status of payments on your team page: par élève (les encadrant⋅es sont exonéré⋅es). Les élèves qui disposent d'une bourse sont exonéré⋅es de ces frais.
Vous pouvez suivre l'état des paiements sur la page de votre équipe :
https://{{ domain }}{% url 'participation:team_detail' pk=team.pk %} https://{{ domain }}{% url 'participation:team_detail' pk=team.pk %}
{% endif %} {% endif %}
{% if message %} {% if message %}
The organisers send you this message: Les organisateurices vous adressent ce message :
{{ message }} {{ message }}
{% endif %} {% endif %}
The ETEAM team Le comité d'organisation du TFJM²

View File

@ -1,15 +1,37 @@
{% extends request.content_only|yesno:"empty.html,base.html" %} {% extends request.content_only|yesno:"empty.html,base.html" %}
{% load crispy_forms_filters i18n %} {% load crispy_forms_filters crispy_forms_tags i18n %}
{% block content %} {% block content %}
<form method="post"> <form method="post">
<div id="form-content"> <div id="form-content">
{% csrf_token %} {% csrf_token %}
{{ form|crispy }} {{ form|crispy }}
{{ participation_form|crispy }} {% crispy participation_form %}
</div> </div>
<button class="btn btn-success" type="submit">{% trans "Update" %}</button> <button class="btn btn-success" type="submit">{% trans "Update" %}</button>
</form> </form>
{% endblock content %} {% endblock content %}
{% block extrajavascript %}
<script>
const tournamentSelect = document.getElementById('id_tournament')
const idfWarningBanner = document.getElementById('idf_warning_banner')
const unifiedRegistrationTournamentIds = idfWarningBanner.getAttribute('data-tid-unified').split(',')
if (idfWarningBanner.getAttribute('data-tid-unified') !== "") {
function updateIDFWarningBannerVisibility() {
const tid = tournamentSelect.value
if (unifiedRegistrationTournamentIds.includes(tid))
idfWarningBanner.classList.remove('d-none')
else
idfWarningBanner.classList.add('d-none')
}
tournamentSelect.addEventListener('change', updateIDFWarningBannerVisibility)
updateIDFWarningBannerVisibility()
}
else {
idfWarningBanner.classList.add('d-none')
}
</script>
{% endblock %}

View File

@ -14,7 +14,7 @@
<p> <p>
{% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament.name %} {% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament.name %}
We successfully received the payment of {{ amount }} € for your participation for the ETEAM in the team {{ team }}! We successfully received the payment of {{ amount }} € for your participation for the TFJM² in the team {{ team }} for the tournament {{ tournament }}!
{% endblocktrans %} {% endblocktrans %}
</p> </p>
@ -32,13 +32,17 @@
</ul> </ul>
</p> </p>
<p>
{% trans "Please note that these dates may be subject to change. If your local organizers gave you different dates, trust them." %}
</p>
<p> <p>
{% trans "NB: This mail don't represent a payment receipt. The payer should receive a mail from Hello Asso. If it is not the case, please contact us if necessary" %} {% trans "NB: This mail don't represent a payment receipt. The payer should receive a mail from Hello Asso. If it is not the case, please contact us if necessary" %}
</p> </p>
-- --
<p> <p>
{% trans "The ETEAM team." %}<br> {% trans "The TFJM² team." %}<br>
</p> </p>
</body> </body>
</html> </html>

View File

@ -2,7 +2,7 @@
{% trans "Hi" %} {{ registration|safe }}, {% trans "Hi" %} {{ registration|safe }},
{% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament.name %} {% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament.name %}
We successfully received the payment of {{ amount }} € for your participation for the ETEAM in the team {{ team }}! We successfully received the payment of {{ amount }} € for your participation for the TFJM² in the team {{ team }} for the tournament {{ tournament }}!
{% endblocktrans %} {% endblocktrans %}
{% trans "Your registration is now fully completed, and you can work on your solutions." %} {% trans "Your registration is now fully completed, and you can work on your solutions." %}
@ -13,8 +13,10 @@ We successfully received the payment of {{ amount }} € for your participation
* {% trans "Problems draw:" %} {{ payment.tournament.solutions_draw|date }} * {% trans "Problems draw:" %} {{ payment.tournament.solutions_draw|date }}
* {% trans "Tournament dates:" %} {% trans "From" %} {{ payment.tournament.date_start|date }} {% trans "to" %} {{ payment.tournament.date_end|date }} * {% trans "Tournament dates:" %} {% trans "From" %} {{ payment.tournament.date_start|date }} {% trans "to" %} {{ payment.tournament.date_end|date }}
{% trans "Please note that these dates may be subject to change. If your local organizers gave you different dates, trust them." %}
{% trans "NB: This mail don't represent a payment receipt. The payer should receive a mail from Hello Asso. If it is not the case, please contact us if necessary" %} {% trans "NB: This mail don't represent a payment receipt. The payer should receive a mail from Hello Asso. If it is not the case, please contact us if necessary" %}
-- --
{% trans "The ETEAM team" %} {% trans "The TFJM² team" %}

View File

@ -14,7 +14,7 @@
<p> <p>
{% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament %} {% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament %}
You are registered for the ETEAM. Your team {{ team }} has been successfully validated. You are registered for the TFJM² of {{ tournament }}. Your team {{ team }} has been successfully validated.
To end your inscription, you must pay the amount of {{ amount }} €. To end your inscription, you must pay the amount of {{ amount }} €.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
@ -49,7 +49,7 @@
-- --
<p> <p>
{% trans "The ETEAM team." %}<br> {% trans "The TFJM² team." %}<br>
</p> </p>
</body> </body>
</html> </html>

View File

@ -2,7 +2,7 @@
{% trans "Hi" %} {{ registration|safe }}, {% trans "Hi" %} {{ registration|safe }},
{% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament %} {% blocktrans trimmed with amount=payment.amount team=payment.team.trigram tournament=payment.tournament %}
You are registered for the ETEAM. Your team {{ team }} has been successfully validated. You are registered for the TFJM² of {{ tournament }}. Your team {{ team }} has been successfully validated.
To end your inscription, you must pay the amount of {{ amount }} €. To end your inscription, you must pay the amount of {{ amount }} €.
{% endblocktrans %} {% endblocktrans %}
{% if payment.grouped %} {% if payment.grouped %}
@ -19,4 +19,4 @@ https://{{ domain }}{% url "registration:update_payment" pk=payment.pk %}
{% trans "If you have any problem, feel free to contact us." %} {% trans "If you have any problem, feel free to contact us." %}
-- --
The ETEAM team The TFJM² team

View File

@ -17,6 +17,7 @@
% Specials % Specials
\newcommand{\writingsep}{\vrule height 4ex width 0pt} \newcommand{\writingsep}{\vrule height 4ex width 0pt}
\newcommand{\cdt}{\kern-0.5pt\ensuremath\cdot\kern-0.5pt}
% Page formating % Page formating
\hoffset -1in \hoffset -1in
@ -56,19 +57,23 @@ Autorisation d'enregistrement et de diffusion de l'image ({{ tournament.name }})
Je soussign\'e {{ registration|safe|default:"\dotfill" }}\\ Je soussign\'e\cdt{}e {{ registration|safe|default:"\dotfill" }}\\
demeurant au {{ registration.address|safe|default:"\dotfill" }} demeurant au {{ registration.address|safe|default:"\dotfill" }}
\medskip \medskip
Cochez la/les cases correspondantes.\\ Cochez la/les cases correspondantes.\\
\medskip \medskip
\fbox{\textcolor{white}{A}} Autorise l'association Animath, \`a l'occasion du $\mathbb{TFJM}^2$ de {{ tournament.name }} \fbox{\textcolor{white}{A}} Autorise l'association Animath, \`a l'occasion du $\mathbb{TFJM}^2$
du {{ tournament.date_start }} au {{ tournament.date_end }} à : {{ tournament.place }}, \`a me photographier ou \`a me {% if tournament.unified_registration %} dans
filmer et \`a diffuser les photos et/ou les vid\'eos r\'ealis\'ees \`a cette occasion sur son site et sur les sites l'un des tournois d'Île-de-France (selon sélection : du 26 au 27 avril 2025, du 3 au 4 mai 2025, ou du 10 au 11 mai 2025)
partenaires. D\'eclare c\'eder \`a titre gracieux \`a Animath le droit dutiliser mon image sur tous ses supports {% else %} de
d'information : brochures, sites web, r\'eseaux sociaux. Animath devient, par la pr\'esente, cessionnaire des droits {{ tournament.name }} du {{ tournament.date_start }} au {{ tournament.date_end }} à : {{ tournament.place }},
pendant toute la dur\'ee pour laquelle ont \'et\'e acquis les droits d'auteur de ces photographies.\\ {% endif %} \`a
me photographier ou \`a me filmer et \`a diffuser les photos et/ou les vid\'eos r\'ealis\'ees \`a cette occasion
sur son site et sur les sites partenaires. D\'eclare c\'eder \`a titre gracieux \`a Animath le droit dutiliser mon
image sur tous ses supports d'information : brochures, sites web, r\'eseaux sociaux. Animath devient, par la pr\'esente,
cessionnaire des droits pendant toute la dur\'ee pour laquelle ont \'et\'e acquis les droits d'auteur de ces photographies.\\
\medskip \medskip
Animath s'engage, conform\'ement aux dispositions l\'egales en vigueur relatives au droit \`a l'image, \`a ce que la Animath s'engage, conform\'ement aux dispositions l\'egales en vigueur relatives au droit \`a l'image, \`a ce que la
@ -98,7 +103,7 @@ Animath, IHP, 11 rue Pierre et Marie Curie, 75231 Paris cedex 05.\\
\bigskip \bigskip
Signature pr\'ec\'ed\'ee de la mention \og lu et approuv\'e \fg{} Signature pr\'ec\'ed\'ee de la mention « lu et approuv\'e »
\medskip \medskip
@ -106,7 +111,7 @@ Signature pr\'ec\'ed\'ee de la mention \og lu et approuv\'e \fg{}
\begin{minipage}[c]{0.5\textwidth} \begin{minipage}[c]{0.5\textwidth}
\underline{Le participant :}\\ \underline{La/le participant\cdt{}e :}\\
Fait \`a :\\ Fait \`a :\\
le le

View File

@ -17,6 +17,7 @@
% Specials % Specials
\newcommand{\writingsep}{\vrule height 4ex width 0pt} \newcommand{\writingsep}{\vrule height 4ex width 0pt}
\newcommand{\cdt}{\kern-0.5pt\ensuremath\cdot\kern-0.5pt}
% Page formating % Page formating
\hoffset -1in \hoffset -1in
@ -57,20 +58,25 @@ Autorisation d'enregistrement et de diffusion de l'image
Je soussign\'e \dotfill (p\`ere, m\`ere, responsable l\'egal) \\ Je soussign\'e\cdt{}e \dotfill (p\`ere, m\`ere, responsable l\'egal) \\
agissant en qualit\'e de repr\'esentant de {{ registration|safe|default:"\dotfill" }}\\ agissant en qualit\'e de repr\'esentant\cdt{}e de {{ registration|safe|default:"\dotfill" }}\\
demeurant au {{ registration.address|safe|default:"\dotfill" }} demeurant au {{ registration.address|safe|default:"\dotfill" }}
\medskip \medskip
Cochez la/les cases correspondantes.\\ Cochez la/les cases correspondantes.\\
\medskip \medskip
\fbox{\textcolor{white}{A}} Autorise l'association Animath, \`a l'occasion du $\mathbb{TFJM}^2$ de {{ tournament.name }} \fbox{\textcolor{white}{A}} Autorise l'association Animath, \`a l'occasion du $\mathbb{TFJM}^2$
du {{ tournament.date_start }} au {{ tournament.date_end }} à : {{ tournament.place }}, \`a photographier ou \`a filmer {% if tournament.unified_registration %} dans
l'enfant et \`a diffuser les photos et/ou les vid\'eos r\'ealis\'ees \`a cette occasion sur son site et sur les sites l'un des tournois d'Île-de-France (selon sélection : du 26 au 27 avril 2025, du 3 au 4 mai 2025, ou du 10 au 11 mai 2025)
partenaires. D\'eclare c\'eder \`a titre gracieux \`a Animath le droit dutiliser l'image de l'enfant sur tous ses {% else %} de
supports d'information : brochures, sites web, r\'eseaux sociaux. Animath devient, par la pr\'esente, cessionnaire des {{ tournament.name }} du {{ tournament.date_start }} au {{ tournament.date_end }} à : {{ tournament.place }},
droits pendant toute la dur\'ee pour laquelle ont \'et\'e acquis les droits d'auteur de ces photographies.\\ {% endif %} \`a
photographier ou \`a filmer l'enfant et \`a diffuser les photos et/ou les vid\'eos r\'ealis\'ees \`a cette occasion
sur son site et sur les sites partenaires. D\'eclare c\'eder \`a titre gracieux \`a Animath le droit dutiliser l'image
de l'enfant sur tous ses supports d'information : brochures, sites web, r\'eseaux sociaux. Animath devient, par la
pr\'esente, cessionnaire des droits pendant toute la dur\'ee pour laquelle ont \'et\'e acquis les droits d'auteur de
ces photographies.\\
\medskip \medskip
Animath s'engage, conform\'ement aux dispositions l\'egales en vigueur relatives au droit \`a l'image, \`a ce que la Animath s'engage, conform\'ement aux dispositions l\'egales en vigueur relatives au droit \`a l'image, \`a ce que la
@ -100,14 +106,14 @@ Animath, IHP, 11 rue Pierre et Marie Curie, 75231 Paris cedex 05.\\
\bigskip \bigskip
Signatures pr\'ec\'ed\'ees de la mention \og lu et approuv\'e \fg{} Signatures pr\'ec\'ed\'ees de la mention « lu et approuv\'e »
\medskip \medskip
\begin{minipage}[c]{0.5\textwidth} \begin{minipage}[c]{0.5\textwidth}
\underline{Le responsable l\'egal :}\\ \underline{La/le responsable l\'egal\cdt{}e :}\\
Fait \`a :\\ Fait \`a :\\
le : le :

View File

@ -17,6 +17,7 @@
% Specials % Specials
\newcommand{\writingsep}{\vrule height 4ex width 0pt} \newcommand{\writingsep}{\vrule height 4ex width 0pt}
\newcommand{\cdt}{\kern-0.5pt\ensuremath\cdot\kern-0.5pt}
% Page formating % Page formating
\hoffset -1in \hoffset -1in
@ -45,16 +46,25 @@
\Large \bf Autorisation parentale pour les mineurs ({{ tournament.name }}) \Large \bf Autorisation parentale pour les mineurs ({{ tournament.name }})
\end{center} \end{center}
Je soussigné(e) \hrulefill,\\ Je soussigné\cdt{}e \hrulefill,\\
responsable légal, demeurant \writingsep\hrulefill\\ responsable légal\cdt{}e, demeurant \writingsep\hrulefill\\
\writingsep\hrulefill,\\ \writingsep\hrulefill,\\
\writingsep autorise {{ registration|default:"\hrulefill" }},\\ \writingsep autorise {{ registration|default:"\hrulefill" }},\\
né(e) le {{ registration.birth_date }}, \cdt{}e le {{ registration.birth_date|default:"\underline{\phantom{dd/mm/aaaa} }" }},
à participer au Tournoi Français des Jeunes Mathématiciennes et Mathématiciens ($\mathbb{TFJM}^2$) organisé \`a : à participer au Tournoi Français des Jeunes Mathématiciennes et Mathématiciens ($\mathbb{TFJM}^2$)
{% if tournament.unified_registration %} dans l'un des tournois d'Île-de-France selon sélection :
\begin{itemize}
\item Île-de-France 1, du 26 au 27 avril 2025 ;
\item Île-de-France 2, du 3 au 4 mai 2025 ;
\item Île-de-France 3, du 10 au 11 mai 2025.
\end{itemize}
{% else %}
organisé \`a :
{{ tournament.place }}, du {{ tournament.date_start }} au {{ tournament.date_end }}. {{ tournament.place }}, du {{ tournament.date_start }} au {{ tournament.date_end }}.
{% endif %}
Iel se rendra au lieu indiqu\'e ci-dessus le samedi matin et quittera les lieux l'après-midi du dimanche par Iel se rendra au lieu indiqu\'e ci-dessus le samedi matin et quittera les lieux l'après-midi du dimanche par
ses propres moyens et sous la responsabilité du représentant légal. ses propres moyens et sous la responsabilité du/de la représentant\cdt{}e légal\cdt{}e.

View File

@ -30,6 +30,15 @@
</div> </div>
</div> </div>
<div class="alert alert-warning">
<h3 class="alert-heading"><i class="fas fa-warning"></i> {% trans "New in 2025" %}</h3>
{% blocktrans trimmed %}
Registration for Ile-de-France tournaments is now unified.
If you live in or near the Ile-de-France region, your registration will be pooled with each of the region's tournaments,
and the organizers will take care of team allocation. However, date constraints can be indicated in the motivation letter.
{% endblocktrans %}
</div>
<div class="jumbotron p-5 border rounded-5"> <div class="jumbotron p-5 border rounded-5">
<h5 class="display-4">{% trans "How does it work?" %}</h5> <h5 class="display-4">{% trans "How does it work?" %}</h5>
<p> <p>

View File

@ -1,6 +1,5 @@
[tox] [tox]
envlist = envlist =
py311
py312 py312
py313 py313