mirror of
https://gitlab.com/animath/si/plateforme.git
synced 2025-02-13 23:41:19 +00:00
Compare commits
4 Commits
b4da740fb6
...
e0f230b8c7
Author | SHA1 | Date | |
---|---|---|---|
|
e0f230b8c7 | ||
|
47b14c3e47 | ||
|
0607398491 | ||
|
a454441097 |
@ -68,7 +68,7 @@ class RequestValidationForm(forms.Form):
|
||||
)
|
||||
|
||||
engagement = forms.BooleanField(
|
||||
label=_("I engage myself to participate to the whole \"Correspondances\"."),
|
||||
label=_("I engage myself to participate to the whole TFJM²."),
|
||||
required=True,
|
||||
)
|
||||
|
||||
|
@ -21,7 +21,7 @@ from tfjm.matrix import Matrix, RoomPreset, RoomVisibility
|
||||
|
||||
class Team(models.Model):
|
||||
"""
|
||||
The Team model represents a real team that participates to the Correspondances.
|
||||
The Team model represents a real team that participates to the TFJM².
|
||||
This only includes the registration detail.
|
||||
"""
|
||||
name = models.CharField(
|
||||
|
@ -11,7 +11,7 @@ Bonjour {{ user.registration }},
|
||||
|
||||
<p>
|
||||
L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
|
||||
au {{ team.participation.get_problem_display }} du TFJM² des Jeunes Mathématicien·ne·s.
|
||||
au {{ team.participation.get_problem_display }} du TFJM².
|
||||
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 %}">
|
||||
https://{{ domain }}{% url "participation:team_detail" pk=team.pk %}
|
||||
@ -23,7 +23,7 @@ Cordialement,
|
||||
</p>
|
||||
|
||||
<p>
|
||||
L'organisation du TFJM² des Jeunes Mathématicien·ne·s
|
||||
L'organisation du TFJM²
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,10 +1,10 @@
|
||||
Bonjour {{ user.registration }},
|
||||
|
||||
L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer
|
||||
au {{ team.participation.get_problem_display }} du TFJM² des Jeunes Mathématicien·ne·s.
|
||||
au {{ team.participation.get_problem_display }} du TFJM².
|
||||
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 %}
|
||||
|
||||
Cordialement,
|
||||
|
||||
L'organisation du TFJM² des Jeunes Mathématicien·ne·s
|
||||
L'organisation du TFJM²
|
||||
|
@ -17,6 +17,6 @@ pour plus d'informations.
|
||||
<br/>
|
||||
Cordialement,<br/>
|
||||
<br/>
|
||||
Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s
|
||||
Le comité d'organisation du TFJM²
|
||||
</body>
|
||||
</html>
|
||||
|
@ -9,4 +9,4 @@ N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'infor
|
||||
|
||||
Cordialement,
|
||||
|
||||
Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s
|
||||
Le comité d'organisation du TFJM²
|
||||
|
@ -7,14 +7,14 @@
|
||||
<body>
|
||||
Bonjour,<br/>
|
||||
<br/>
|
||||
Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte à travailler sur
|
||||
votre problème. Lorsque les Correspondances auront débutées, vous pourrez soumettre votre vidéo sur la plateforme d'inscription.<br>
|
||||
Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte
|
||||
à travailler sur vos problèmes. Vous pourrez ensuite envoyer vos solutions sur la plateforme.<br>
|
||||
Les organisateurs vous adressent ce message :<br/>
|
||||
<br/>
|
||||
{{ message }}<br />
|
||||
<br/>
|
||||
Cordialement,<br/>
|
||||
<br/>
|
||||
Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s
|
||||
Le comité d'organisation du TFJM²
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,7 +1,7 @@
|
||||
Bonjour,
|
||||
|
||||
Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte à travailler sur
|
||||
votre problème. Lorsque les Correspondances auront débutées, vous pourrez soumettre votre vidéo sur la plateforme d'inscription.
|
||||
Félicitations ! Votre équipe « {{ team.name }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte
|
||||
à travailler sur vos problèmes. Vous pourrez ensuite envoyer vos solutions sur la plateforme.
|
||||
|
||||
Les organisateurs vous adressent ce message :
|
||||
|
||||
@ -9,4 +9,4 @@ Les organisateurs vous adressent ce message :
|
||||
|
||||
Cordialement,
|
||||
|
||||
Le comité d'organisation du TFJM² des Jeunes Mathématicien·ne·s
|
||||
Le comité d'organisation du TFJM²
|
||||
|
@ -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_plain = render_to_string("participation/mails/request_validation.txt", mail_context)
|
||||
mail_html = render_to_string("participation/mails/request_validation.html", mail_context)
|
||||
admin.user.email_user("[Corres2math] Validation d'équipe", mail_plain, html_message=mail_html)
|
||||
admin.user.email_user("[TFJM²] Validation d'équipe", mail_plain, html_message=mail_html)
|
||||
return super().form_valid(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_plain = render_to_string("participation/mails/team_validated.txt", mail_context)
|
||||
mail_html = render_to_string("participation/mails/team_validated.html", mail_context)
|
||||
send_mail("[Corres2math] Équipe validée", mail_plain, None, [self.object.email], html_message=mail_html)
|
||||
send_mail("[TFJM²] É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().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_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)
|
||||
send_mail("[Corres2math] Équipe non validée", mail_plain, None, [self.object.email],
|
||||
send_mail("[TFJM²] Équipe non validée", mail_plain, None, [self.object.email],
|
||||
html_message=mail_html)
|
||||
else:
|
||||
form.add_error(None, _("You must specify if you validate the registration or not."))
|
||||
|
@ -45,7 +45,7 @@ class Registration(PolymorphicModel):
|
||||
The account got created or the email got changed.
|
||||
Send an email that contains a link to validate the address.
|
||||
"""
|
||||
subject = "[Corres2math] " + str(_("Activate your Correspondances account"))
|
||||
subject = "[TFJM²] " + str(_("Activate your TFJM² account"))
|
||||
token = email_validation_token.make_token(self.user)
|
||||
uid = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||
site = Site.objects.first()
|
||||
|
@ -20,7 +20,7 @@ class RegistrationTable(tables.Table):
|
||||
|
||||
def order_type(self, queryset, desc):
|
||||
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:
|
||||
attrs = {
|
||||
@ -28,5 +28,5 @@ class RegistrationTable(tables.Table):
|
||||
}
|
||||
model = Registration
|
||||
fields = ('last_name', 'user__first_name', 'user__email', 'type',)
|
||||
order_by = ('volunteerregistration__adminregistration', 'volunteerregistration', 'last_name', 'first_name',)
|
||||
order_by = ('type', 'last_name', 'first_name',)
|
||||
template_name = 'django_tables2/bootstrap4.html'
|
||||
|
@ -0,0 +1,38 @@
|
||||
{% 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>
|
@ -0,0 +1,17 @@
|
||||
{% 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." %}
|
@ -9,11 +9,11 @@
|
||||
<body>
|
||||
|
||||
<p>
|
||||
{% trans "Hi" %} {{ user.username }},
|
||||
{% trans "Hi" %} {{ user.registration }},
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% trans "You recently registered on the Correspondances platform. Please click on the link below to confirm your registration." %}
|
||||
{% trans "You recently registered on the TFJM² platform. Please click on the link below to confirm your registration." %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@ -1,8 +1,8 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% trans "Hi" %} {{ user.username }},
|
||||
{% trans "Hi" %} {{ user.registration }},
|
||||
|
||||
{% trans "You recently registered on the Correspondances platform. Please click on the link below to confirm your registration." %}
|
||||
{% trans "You recently registered on the TFJM² platform. Please click on the link below to confirm your registration." %}
|
||||
|
||||
https://{{ domain }}{% url 'registration:email_validation' uidb64=uid token=token %}
|
||||
|
||||
|
@ -21,6 +21,15 @@
|
||||
<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 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 %}
|
||||
<dt class="col-sm-6 text-right">{% trans "Team:" %}</dt>
|
||||
{% trans "any" as any %}
|
||||
|
@ -6,13 +6,17 @@ import os
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.sites.models import Site
|
||||
from django.core.exceptions import PermissionDenied, ValidationError
|
||||
from django.db import transaction
|
||||
from django.db.models import Q
|
||||
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.http import urlsafe_base64_decode
|
||||
from django.utils.crypto import get_random_string
|
||||
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.views.generic import CreateView, DetailView, RedirectView, TemplateView, UpdateView, View
|
||||
from django_tables2 import SingleTableView
|
||||
@ -114,6 +118,22 @@ class AddOrganizerView(VolunteerMixin, CreateView):
|
||||
registration.save()
|
||||
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
|
||||
|
||||
def get_success_url(self):
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
La plateforme d'inscription du TFJM² des Jeunes Mathématiciennes a été développée entre 2019 et 2021
|
||||
La plateforme d'inscription du TFJM² 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
|
||||
pour intéragir avec les organisateurs et les autres participants.
|
||||
</p>
|
||||
|
Loading…
x
Reference in New Issue
Block a user