diff --git a/chat/static/tfjm/chat_eteam.webmanifest b/chat/static/tfjm/chat_eteam.webmanifest new file mode 100644 index 0000000..3b84c64 --- /dev/null +++ b/chat/static/tfjm/chat_eteam.webmanifest @@ -0,0 +1,17 @@ +{ + "background_color": "white", + "description": "Chat for ETEAM", + "display": "standalone", + "icons": [ + { + "src": "/static/tfjm/img/eteam.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "name": "ETEAM Chat", + "short_name": "ETEAM Chat", + "start_url": "/chat/fullscreen", + "theme_color": "black" +} diff --git a/chat/static/tfjm/chat.webmanifest b/chat/static/tfjm/chat_tfjm.webmanifest similarity index 100% rename from chat/static/tfjm/chat.webmanifest rename to chat/static/tfjm/chat_tfjm.webmanifest diff --git a/chat/templates/chat/chat.html b/chat/templates/chat/chat.html index 5588aab..e556ce0 100644 --- a/chat/templates/chat/chat.html +++ b/chat/templates/chat/chat.html @@ -6,7 +6,11 @@ {% block extracss %} {# Webmanifest PWA permettant l'installation de l'application sur un écran d'accueil, pour navigateurs supportés #} - + {% if TFJM.APP == "TFJM" %} + + {% elif TFJM.APP == "ETEAM" %} + + {% endif %} {% endblock %} {% block content-title %}{% endblock %} diff --git a/chat/templates/chat/fullscreen.html b/chat/templates/chat/fullscreen.html index e82a4e8..3a5cf0c 100644 --- a/chat/templates/chat/fullscreen.html +++ b/chat/templates/chat/fullscreen.html @@ -6,10 +6,13 @@
-- You must now pay your participation fee of € {{ team.participation.amount }}. + You must now pay your participation fee of € {{ payment.amount }}. You can pay by credit card or bank transfer. You'll find information on the payment page which you can find on - . + your account. If you have a scholarship, registration is free, but you must submit a justification on the same page.
{% elif registration.is_coach and team.participation.tournament.price %} diff --git a/participation/templates/participation/mails/team_validated.txt b/participation/templates/participation/mails/team_validated.txt index 46991d0..98b1814 100644 --- a/participation/templates/participation/mails/team_validated.txt +++ b/participation/templates/participation/mails/team_validated.txt @@ -2,8 +2,8 @@ Hello {{registration }}, Congratulations! Your team "{{ team.name }}" ({{ team.trigram }}) is now validated! You are now ready to to work on your problems. You can then upload your solutions to the platform. -{% if team.participation.amount %} -You must now pay your participation fee of € {{ team.participation.amount }}. +{% if payment %} +You must now pay your participation fee of € {{ payment.amount }}. You can pay by credit card or bank transfer. You'll find information on the payment page which you can find on your account: https://{{ domain }}{% url 'registration:my_account_detail' %} diff --git a/participation/views.py b/participation/views.py index 8834e2d..21d9079 100644 --- a/participation/views.py +++ b/participation/views.py @@ -231,7 +231,7 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) mail_context = dict(team=self.object, domain=Site.objects.first().domain) mail_plain = render_to_string("participation/mails/request_validation.txt", mail_context) mail_html = render_to_string("participation/mails/request_validation.html", mail_context) - send_mail("[TFJM²] Validation d'équipe", mail_plain, settings.DEFAULT_FROM_EMAIL, + send_mail(f"[{settings.APP_NAME}] {_('Team validation')}", mail_plain, settings.DEFAULT_FROM_EMAIL, [self.object.participation.tournament.organizers_email], html_message=mail_html) return super().form_valid(form) @@ -255,7 +255,8 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) domain = Site.objects.first().domain for registration in self.object.participants.all(): - if registration.is_student and self.object.participation.tournament.price: + if settings.PAYMENT_MANAGEMENT and \ + registration.is_student and self.object.participation.tournament.price: payment = Payment.objects.get(registrations=registration, final=False) else: payment = None @@ -265,7 +266,8 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView) message=form.cleaned_data["message"].replace('\n', '+ 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² +
+ + diff --git a/registration/templates/registration/mails/final_selection.txt b/registration/templates/registration/mails/final_selection.txt new file mode 100644 index 0000000..364c736 --- /dev/null +++ b/registration/templates/registration/mails/final_selection.txt @@ -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² diff --git a/registration/views.py b/registration/views.py index 9d1a7d7..843809d 100644 --- a/registration/views.py +++ b/registration/views.py @@ -18,7 +18,7 @@ from django.http import FileResponse, Http404 from django.shortcuts import redirect, resolve_url from django.template.loader import render_to_string from django.urls import reverse_lazy -from django.utils import timezone, translation +from django.utils import translation from django.utils.crypto import get_random_string from django.utils.http import urlsafe_base64_decode from django.utils.text import format_lazy @@ -121,7 +121,7 @@ class AddOrganizerView(VolunteerMixin, CreateView): form.instance.set_password(password) form.instance.save() - subject = "[TFJM²] " + str(_("New TFJM² organizer account")) + subject = f"[{settings.APP_NAME}] " + str(_("New organizer account")) site = Site.objects.first() message = render_to_string('registration/mails/add_organizer.txt', dict(user=registration.user, inviter=self.request.user, diff --git a/tfjm/context_processors.py b/tfjm/context_processors.py index 29a0ae7..2bb128e 100644 --- a/tfjm/context_processors.py +++ b/tfjm/context_processors.py @@ -1,5 +1,7 @@ -from django.conf import settings +# Copyright (C) 2024 by Animath +# SPDX-License-Identifier: GPL-3.0-or-later +from django.conf import settings from participation.models import Tournament @@ -7,6 +9,7 @@ def tfjm_context(request): return { 'TFJM': { 'APP': settings.TFJM_APP, + 'APP_NAME': settings.APP_NAME, 'ML_MANAGEMENT': settings.ML_MANAGEMENT, 'PAYMENT_MANAGEMENT': settings.PAYMENT_MANAGEMENT, 'SINGLE_TOURNAMENT': diff --git a/tfjm/settings.py b/tfjm/settings.py index ca50624..af28623 100644 --- a/tfjm/settings.py +++ b/tfjm/settings.py @@ -347,6 +347,7 @@ except ImportError: if TFJM_APP == "TFJM": PREFERRED_LANGUAGE_CODE = 'fr' + APP_NAME = "TFJM²" TEAM_CODE_LENGTH = 3 RECOMMENDED_SOLUTIONS_COUNT = 5 NB_ROUNDS = 2 @@ -369,6 +370,7 @@ if TFJM_APP == "TFJM": ] elif TFJM_APP == "ETEAM": PREFERRED_LANGUAGE_CODE = 'en' + APP_NAME = "TFJM²" TEAM_CODE_LENGTH = 4 RECOMMENDED_SOLUTIONS_COUNT = 6 NB_ROUNDS = 3 diff --git a/tfjm/templates/base.html b/tfjm/templates/base.html index cb90406..4096641 100644 --- a/tfjm/templates/base.html +++ b/tfjm/templates/base.html @@ -9,11 +9,13 @@