1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-02-21 18:21:20 +00:00

Compare commits

..

No commits in common. "e0f230b8c7d2fe091bdf7a47c7c1bb8e268790d8" and "b4da740fb6ba8611055c6c4856a0dd81fc000d2f" have entirely different histories.

19 changed files with 228 additions and 342 deletions

View File

@ -68,7 +68,7 @@ class RequestValidationForm(forms.Form):
) )
engagement = forms.BooleanField( engagement = forms.BooleanField(
label=_("I engage myself to participate to the whole TFJM²."), label=_("I engage myself to participate to the whole \"Correspondances\"."),
required=True, required=True,
) )

View File

@ -21,7 +21,7 @@ from tfjm.matrix import Matrix, RoomPreset, RoomVisibility
class Team(models.Model): class Team(models.Model):
""" """
The Team model represents a real team that participates to the TFJM². The Team model represents a real team that participates to the Correspondances.
This only includes the registration detail. This only includes the registration detail.
""" """
name = models.CharField( name = models.CharField(

View File

@ -11,7 +11,7 @@ Bonjour {{ user.registration }},
<p> <p>
L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
au {{ team.participation.get_problem_display }} du TFJM². au {{ team.participation.get_problem_display }} du TFJM² des Jeunes Mathématicien·ne·s.
Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe : 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 %}
@ -23,7 +23,7 @@ Cordialement,
</p> </p>
<p> <p>
L'organisation du TFJM² L'organisation du TFJM² des Jeunes Mathématicien·ne·s
</p> </p>
</body> </body>
</html> </html>

View File

@ -1,10 +1,10 @@
Bonjour {{ user.registration }}, Bonjour {{ user.registration }},
L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
au {{ team.participation.get_problem_display }} du TFJM². au {{ team.participation.get_problem_display }} du TFJM² des Jeunes Mathématicien·ne·s.
Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe : 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 %}
Cordialement, Cordialement,
L'organisation du TFJM² L'organisation du TFJM² des Jeunes Mathématicien·ne·s

View File

@ -17,6 +17,6 @@ pour plus d'informations.
<br/> <br/>
Cordialement,<br/> Cordialement,<br/>
<br/> <br/>
Le comité d'organisation du TFJM² Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s
</body> </body>
</html> </html>

View File

@ -9,4 +9,4 @@ N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'infor
Cordialement, Cordialement,
Le comité d'organisation du TFJM² Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s

View File

@ -7,14 +7,14 @@
<body> <body>
Bonjour,<br/> Bonjour,<br/>
<br/> <br/>
Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte à travailler sur
à travailler sur vos problèmes. Vous pourrez ensuite envoyer vos solutions sur la plateforme.<br> votre problème. Lorsque les Correspondances auront débutées, vous pourrez soumettre votre vidéo sur la plateforme d'inscription.<br>
Les organisateurs vous adressent ce message :<br/> Les organisateurs vous adressent ce message :<br/>
<br/> <br/>
{{ message }}<br /> {{ message }}<br />
<br/> <br/>
Cordialement,<br/> Cordialement,<br/>
<br/> <br/>
Le comité d'organisation du TFJM² Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s
</body> </body>
</html> </html>

View File

@ -1,7 +1,7 @@
Bonjour, Bonjour,
Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte à travailler sur
à travailler sur vos problèmes. Vous pourrez ensuite envoyer vos solutions sur la plateforme. votre problème. Lorsque les Correspondances auront débutées, vous pourrez soumettre votre vidéo sur la plateforme d'inscription.
Les organisateurs vous adressent ce message : Les organisateurs vous adressent ce message :
@ -9,4 +9,4 @@ Les organisateurs vous adressent ce message :
Cordialement, Cordialement,
Le comité d'organisation du TFJM² Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s

View File

@ -218,7 +218,7 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView)
mail_context = dict(user=admin.user, team=self.object, domain=Site.objects.first().domain) mail_context = dict(user=admin.user, team=self.object, domain=Site.objects.first().domain)
mail_plain = render_to_string("participation/mails/request_validation.txt", mail_context) mail_plain = render_to_string("participation/mails/request_validation.txt", mail_context)
mail_html = render_to_string("participation/mails/request_validation.html", mail_context) mail_html = render_to_string("participation/mails/request_validation.html", mail_context)
admin.user.email_user("[TFJM²] Validation d'équipe", mail_plain, html_message=mail_html) admin.user.email_user("[Corres2math] Validation d'équipe", mail_plain, html_message=mail_html)
return super().form_valid(form) return super().form_valid(form)
def handle_validate_participation(self, form): def handle_validate_participation(self, form):
@ -238,7 +238,7 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView)
mail_context = dict(team=self.object, message=form.cleaned_data["message"]) mail_context = dict(team=self.object, message=form.cleaned_data["message"])
mail_plain = render_to_string("participation/mails/team_validated.txt", mail_context) mail_plain = render_to_string("participation/mails/team_validated.txt", mail_context)
mail_html = render_to_string("participation/mails/team_validated.html", mail_context) mail_html = render_to_string("participation/mails/team_validated.html", mail_context)
send_mail("[TFJM²] Équipe validée", mail_plain, None, [self.object.email], html_message=mail_html) send_mail("[Corres2math] Équipe validée", mail_plain, None, [self.object.email], html_message=mail_html)
get_sympa_client().subscribe(self.object.email, "equipes", False, f"Equipe {self.object.name}") get_sympa_client().subscribe(self.object.email, "equipes", False, f"Equipe {self.object.name}")
get_sympa_client().unsubscribe(self.object.email, "equipes-non-valides", False) get_sympa_client().unsubscribe(self.object.email, "equipes-non-valides", False)
@ -248,7 +248,7 @@ class TeamDetailView(LoginRequiredMixin, FormMixin, ProcessFormView, DetailView)
mail_context = dict(team=self.object, message=form.cleaned_data["message"]) mail_context = dict(team=self.object, message=form.cleaned_data["message"])
mail_plain = render_to_string("participation/mails/team_not_validated.txt", mail_context) mail_plain = render_to_string("participation/mails/team_not_validated.txt", mail_context)
mail_html = render_to_string("participation/mails/team_not_validated.html", mail_context) mail_html = render_to_string("participation/mails/team_not_validated.html", mail_context)
send_mail("[TFJM²] Équipe non validée", mail_plain, None, [self.object.email], send_mail("[Corres2math] Équipe non validée", mail_plain, None, [self.object.email],
html_message=mail_html) html_message=mail_html)
else: else:
form.add_error(None, _("You must specify if you validate the registration or not.")) form.add_error(None, _("You must specify if you validate the registration or not."))

View File

@ -45,7 +45,7 @@ class Registration(PolymorphicModel):
The account got created or the email got changed. The account got created or the email got changed.
Send an email that contains a link to validate the address. Send an email that contains a link to validate the address.
""" """
subject = "[TFJM²] " + str(_("Activate your TFJM² account")) subject = "[Corres2math] " + str(_("Activate your Correspondances account"))
token = email_validation_token.make_token(self.user) token = email_validation_token.make_token(self.user)
uid = urlsafe_base64_encode(force_bytes(self.user.pk)) uid = urlsafe_base64_encode(force_bytes(self.user.pk))
site = Site.objects.first() site = Site.objects.first()

View File

@ -20,7 +20,7 @@ class RegistrationTable(tables.Table):
def order_type(self, queryset, desc): def order_type(self, queryset, desc):
types = ["volunteerregistration__adminregistration", "volunteerregistration", "participantregistration"] types = ["volunteerregistration__adminregistration", "volunteerregistration", "participantregistration"]
return queryset.order_by(*(("-" if desc else "") + t for t in types)), True return queryset.order_by(*(("" if desc else "-") + t for t in types)), True
class Meta: class Meta:
attrs = { attrs = {
@ -28,5 +28,5 @@ class RegistrationTable(tables.Table):
} }
model = Registration model = Registration
fields = ('last_name', 'user__first_name', 'user__email', 'type',) fields = ('last_name', 'user__first_name', 'user__email', 'type',)
order_by = ('type', 'last_name', 'first_name',) order_by = ('volunteerregistration__adminregistration', 'volunteerregistration', 'last_name', 'first_name',)
template_name = 'django_tables2/bootstrap4.html' template_name = 'django_tables2/bootstrap4.html'

View File

@ -1,38 +0,0 @@
{% load i18n %}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<p>
Bonjour {{ user.registration }},
</p>
<p>
Vous avez été invités par {{ inviter }} à rejoindre la plateforme du TFJM², accessible à l'adresse
<a href="https://{{ domain }}/">https://{{ domain }}/</a>. Vous disposez d'un compte d'organisateur.
</p>
<p>
Un mot de passe aléatoire a été défini : <strong>{{ password }}</strong>.
Par sécurité, merci de le changer dès votre connexion.
</p>
<p>
En cas de problème, merci de nous contacter soit par mail à l'adresse
<a href="mailto:contact@tfjm.org">contact@tfjm.org</a>, soit sur la plateforme de chat accessible sur
<a href="https://element.tfjm.org/">https://element.tfjm.org/</a> en vous connectant avec les mêmes identifiants.
</p>
<p>
Bien cordialement,
</p>
--
<p>
{% trans "The TFJM² team." %}<br>
</p>

View File

@ -1,17 +0,0 @@
{% load i18n %}
Bonjour {{ user.registration }},
Vous avez été invités par {{ inviter }} à rejoindre la plateforme du TFJM², accessible à l'adresse
https://{{ domain }}/. Vous disposez d'un compte d'organisateur.
Un mot de passe aléatoire a été défini : {{ password }}.
Par sécurité, merci de le changer dès votre connexion.
En cas de problème, merci de nous contacter soit par mail à l'adresse contact@tfjm.org, soit sur la plateforme
de chat accessible sur https://element.tfjm.org/ en vous connectant avec les mêmes identifiants.
Bien cordialement,
--
{% trans "The TFJM² team." %}

View File

@ -9,11 +9,11 @@
<body> <body>
<p> <p>
{% trans "Hi" %} {{ user.registration }}, {% trans "Hi" %} {{ user.username }},
</p> </p>
<p> <p>
{% trans "You recently registered on the TFJM² platform. Please click on the link below to confirm your registration." %} {% trans "You recently registered on the Correspondances platform. Please click on the link below to confirm your registration." %}
</p> </p>
<p> <p>

View File

@ -1,8 +1,8 @@
{% load i18n %} {% load i18n %}
{% trans "Hi" %} {{ user.registration }}, {% trans "Hi" %} {{ user.username }},
{% trans "You recently registered on the TFJM² platform. Please click on the link below to confirm your registration." %} {% trans "You recently registered on the Correspondances platform. Please click on the link below to confirm your registration." %}
https://{{ domain }}{% url 'registration:email_validation' uidb64=uid token=token %} https://{{ domain }}{% url 'registration:email_validation' uidb64=uid token=token %}

View File

@ -21,15 +21,6 @@
<dd class="col-sm-6"><a href="mailto:{{ user_object.email }}">{{ user_object.email }}</a> <dd class="col-sm-6"><a href="mailto:{{ user_object.email }}">{{ user_object.email }}</a>
{% if not user_object.registration.email_confirmed %} (<em>{% trans "Not confirmed" %}, <a href="{% url "registration:email_validation_resend" pk=user_object.pk %}">{% trans "resend the validation link" %}</a></em>){% endif %}</dd> {% if not user_object.registration.email_confirmed %} (<em>{% trans "Not confirmed" %}, <a href="{% url "registration:email_validation_resend" pk=user_object.pk %}">{% trans "resend the validation link" %}</a></em>){% endif %}</dd>
{% if user_object == user %}
<dt class="col-sm-6 text-right">{% trans "Password:" %}</dt>
<dd class="col-sm-6">
<a href="{% url 'password_change' %}" class="btn-sm btn-secondary" data-turbolinks="false">
<i class="fas fa-edit"></i> {% trans "Change password" %}
</a>
</dd>
{% endif %}
{% if user_object.registration.participates %} {% if user_object.registration.participates %}
<dt class="col-sm-6 text-right">{% trans "Team:" %}</dt> <dt class="col-sm-6 text-right">{% trans "Team:" %}</dt>
{% trans "any" as any %} {% trans "any" as any %}

View File

@ -6,17 +6,13 @@ import os
from django.conf import settings from django.conf import settings
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from django.core.exceptions import PermissionDenied, ValidationError from django.core.exceptions import PermissionDenied, ValidationError
from django.db import transaction from django.db import transaction
from django.db.models import Q from django.db.models import Q
from django.http import FileResponse, Http404 from django.http import FileResponse, Http404
from django.shortcuts import redirect, resolve_url from django.shortcuts import redirect, resolve_url
from django.template.loader import render_to_string
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.utils.crypto import get_random_string from django.utils.http import urlsafe_base64_decode
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_decode, urlsafe_base64_encode
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, DetailView, RedirectView, TemplateView, UpdateView, View from django.views.generic import CreateView, DetailView, RedirectView, TemplateView, UpdateView, View
from django_tables2 import SingleTableView from django_tables2 import SingleTableView
@ -118,22 +114,6 @@ class AddOrganizerView(VolunteerMixin, CreateView):
registration.save() registration.save()
registration.send_email_validation_link() registration.send_email_validation_link()
password = get_random_string(16)
form.instance.set_password(password)
form.instance.save()
subject = "[TFJM²] " + str(_("New TFJM² organizer account"))
site = Site.objects.first()
message = render_to_string('registration/mails/add_organizer.txt', dict(user=registration.user,
inviter=self.request.user,
password=password,
domain=site.domain))
html = render_to_string('registration/mails/add_organizer.html', dict(user=registration.user,
inviter=self.request.user,
password=password,
domain=site.domain))
registration.user.email_user(subject, message, html_message=html)
return ret return ret
def get_success_url(self): def get_success_url(self):

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@
{% block content %} {% block content %}
<p> <p>
La plateforme d'inscription du TFJM² a été développée entre 2019 et 2021 La plateforme d'inscription du TFJM² des Jeunes Mathématiciennes a été développée entre 2019 et 2021
par Yohann D'ANELLO, bénévole pour l'association Animath. Elle est vouée à être utilisée par les participants par Yohann D'ANELLO, bénévole pour l'association Animath. Elle est vouée à être utilisée par les participants
pour intéragir avec les organisateurs et les autres participants. pour intéragir avec les organisateurs et les autres participants.
</p> </p>