mirror of
				https://gitlab.com/animath/si/plateforme.git
				synced 2025-10-31 10:09:53 +01:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			67958335ab
			...
			df6fb3b3f3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | df6fb3b3f3 | ||
|  | 3807fbcf45 | ||
|  | 8433390e19 | ||
|  | ec85f62ab6 | ||
|  | 74b2a0c095 | 
| @@ -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
											
										
									
								
							| @@ -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 | ||||||
|   | |||||||
| @@ -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" | ||||||
|  |             ), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
| @@ -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"), | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -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² | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -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² | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -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² | ||||||
|   | |||||||
| @@ -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 %} | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -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" %} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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 d’utiliser 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 d’utiliser 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 | ||||||
|   | |||||||
| @@ -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 d’utiliser 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 d’utiliser 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 : | ||||||
|   | |||||||
| @@ -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 }}, | né\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. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user