From f9dc0e57add5ae08e42dca6ebd31d2f5675cacb1 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Tue, 5 May 2020 17:12:24 +0200 Subject: [PATCH] Send mails --- apps/tournament/models.py | 11 +++++++++++ apps/tournament/urls.py | 3 +-- apps/tournament/views.py | 19 ++++--------------- .../mail_templates/request_validation.html | 8 ++++---- .../mail_templates/request_validation.txt | 9 +++++++++ templates/mail_templates/unvalidate_team.html | 17 ++++++++++++----- templates/mail_templates/unvalidate_team.txt | 15 +++++++++++++++ templates/mail_templates/validate_team.html | 9 ++++++++- templates/mail_templates/validate_team.txt | 13 +++++++++++++ 9 files changed, 77 insertions(+), 27 deletions(-) create mode 100644 templates/mail_templates/request_validation.txt create mode 100644 templates/mail_templates/unvalidate_team.txt create mode 100644 templates/mail_templates/validate_team.txt diff --git a/apps/tournament/models.py b/apps/tournament/models.py index c542590..041ef3d 100644 --- a/apps/tournament/models.py +++ b/apps/tournament/models.py @@ -1,6 +1,8 @@ import os +from django.core.mail import send_mail from django.db import models +from django.template.loader import render_to_string from django.urls import reverse_lazy from django.utils import timezone from django.utils.translation import gettext_lazy as _ @@ -201,6 +203,15 @@ class Team(models.Model): verbose_name_plural = _("teams") unique_together = (('name', 'year',), ('trigram', 'year',),) + def send_mail(self, template_name, subject="Contact TFJM²", **kwargs): + context = kwargs + context["team"] = self + for user in self.users.all(): + context["user"] = user + message = render_to_string("mail_templates/" + template_name + ".txt", context=context) + message_html = render_to_string("mail_templates/" + template_name + ".html", context=context) + send_mail(subject, message, "contact@tfjm.org", [user.email], html_message=message_html) + def __str__(self): return self.trigram + " -- " + self.name diff --git a/apps/tournament/urls.py b/apps/tournament/urls.py index eb1bdb3..364f23d 100644 --- a/apps/tournament/urls.py +++ b/apps/tournament/urls.py @@ -2,7 +2,7 @@ from django.urls import path from .views import TournamentListView, TournamentCreateView, TournamentDetailView, TournamentUpdateView, \ TeamDetailView, TeamUpdateView, AddOrganizerView, SolutionsView, SolutionsOrgaListView, SynthesesView, \ - SynthesesOrgaListView, PoolListView, PoolCreateView, PoolDetailView, PoolEndpoint + SynthesesOrgaListView, PoolListView, PoolCreateView, PoolDetailView app_name = "tournament" @@ -20,6 +20,5 @@ urlpatterns = [ path("all_syntheses/", SynthesesOrgaListView.as_view(), name="all_syntheses"), path("pools/", PoolListView.as_view(), name="pools"), path("pool/add/", PoolCreateView.as_view(), name="create_pool"), - path("pool/add/endpoint/", PoolEndpoint.as_view(), name="create_pool_endpoint"), path("pool//", PoolDetailView.as_view(), name="pool_detail"), ] diff --git a/apps/tournament/views.py b/apps/tournament/views.py index 3b7ea6d..82528ed 100644 --- a/apps/tournament/views.py +++ b/apps/tournament/views.py @@ -11,15 +11,12 @@ from django.shortcuts import redirect from django.template.loader import render_to_string from django.urls import reverse_lazy from django.utils import timezone -from django.utils.decorators import method_decorator from django.utils.translation import gettext_lazy as _ -from django.views import View -from django.views.decorators.csrf import csrf_exempt from django.views.generic import DetailView, CreateView, UpdateView from django.views.generic.edit import BaseFormView from django_tables2.views import SingleTableView - from member.models import TFJMUser, Solution, Synthesis + from .forms import TournamentForm, OrganizerForm, SolutionForm, SynthesisForm, TeamForm, PoolForm from .models import Tournament, Team, Pool from .tables import TournamentTable, TeamTable, SolutionTable, SynthesisTable, PoolTable @@ -145,17 +142,17 @@ class TeamDetailView(LoginRequiredMixin, DetailView): elif "request_validation" in request.POST and request.user.participates: team.validation_status = "1waiting" team.save() - # TODO Send mail + team.send_mail("request_validation", "Demande de validation TFJM²") return redirect('tournament:team_detail', pk=team.pk) elif "validate" in request.POST and request.user.organizes: team.validation_status = "2valid" team.save() - # TODO Send mail + team.send_mail("validate_team", "Équipe validée TFJM²") return redirect('tournament:team_detail', pk=team.pk) elif "invalidate" in request.POST and request.user.organizes: team.validation_status = "0invalid" team.save() - # TODO Send mail + team.send_mail("unvalidate_team", "Équipe non validée TFJM²") return redirect('tournament:team_detail', pk=team.pk) elif "delete" in request.POST and request.user.organizes: team.delete() @@ -485,11 +482,3 @@ class PoolDetailView(LoginRequiredMixin, DetailView): return resp return self.get(request, *args, **kwargs) - - -@method_decorator(csrf_exempt, 'dispatch') -class PoolEndpoint(View): - def post(self, request, *args, **kwargs): - print(request.headers) - print(request.user) - print(self.request.POST) diff --git a/templates/mail_templates/request_validation.html b/templates/mail_templates/request_validation.html index 81c3ecf..6a01a18 100644 --- a/templates/mail_templates/request_validation.html +++ b/templates/mail_templates/request_validation.html @@ -6,11 +6,11 @@ Demande de validation - TFJM² -Bonjour {FIRST_NAME} {SURNAME},
+Bonjour {{ user }},

-L'équipe « {TEAM_NAME} » ({TRIGRAM}) vient de demander à valider son équipe pour participer au tournoi {TOURNAMENT} du -TFJM². Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe : -{URL_BASE}/equipe/{TRIGRAM}
+L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer au tournoi +{{ tournament }} du TFJM². Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe : +{% url "tournament:team_detail" pk=team.pk %}

Cordialement,

diff --git a/templates/mail_templates/request_validation.txt b/templates/mail_templates/request_validation.txt new file mode 100644 index 0000000..076b30a --- /dev/null +++ b/templates/mail_templates/request_validation.txt @@ -0,0 +1,9 @@ +Bonjour {{ user }}, + +L'équipe « {{ team.name }} » ({{ team.trigram }}) vient de demander à valider son équipe pour participer au tournoi +{{ tournament }} du TFJM². Vous pouvez décider d'accepter ou de refuser l'équipe en vous rendant sur la page de l'équipe : +{% url "tournament:team_detail" pk=team.pk %} + +Cordialement, + +Le comité national d'organisation du TFJM² diff --git a/templates/mail_templates/unvalidate_team.html b/templates/mail_templates/unvalidate_team.html index 353a70b..bb7a407 100644 --- a/templates/mail_templates/unvalidate_team.html +++ b/templates/mail_templates/unvalidate_team.html @@ -2,15 +2,22 @@ - Équipe non validée – TFJM² {YEAR} + Équipe non validée – TFJM² -Bonjour {FIRST_NAME} {SURNAME},
+Bonjour {{ user }},

-Maleureusement, votre équipe « {TEAM_NAME} » ({TRIGRAM}) n'a pas été validée. Veuillez vérifier que vos autorisations sont correctes. -{MESSAGE}
+Maleureusement, votre équipe « {{ team.name }} » ({{ team.trigram }}) n'a pas été validée. Veuillez vérifier que vos autorisations sont correctes. +{% if message %} +

+ Le CNO vous adresse le message suivant : +

+ {{ message }} +
+

+{% endif %}
-N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'informations. +N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'informations.
Cordialement,

diff --git a/templates/mail_templates/unvalidate_team.txt b/templates/mail_templates/unvalidate_team.txt new file mode 100644 index 0000000..d1e552e --- /dev/null +++ b/templates/mail_templates/unvalidate_team.txt @@ -0,0 +1,15 @@ +Bonjour {{ user }}, + +Maleureusement, votre équipe « {{ team.name }} » ({{ team.trigram }}) n'a pas été validée. Veuillez vérifier que vos autorisations sont correctes. + +{% if message %} +Le CNO vous adresse le message suivant : + +{{ message }} +{% endif %} + +N'hésitez pas à nous contacter à l'adresse contact@tfjm.org pour plus d'informations. + +Cordialement, + +Le comité national d'organisation du TFJM² diff --git a/templates/mail_templates/validate_team.html b/templates/mail_templates/validate_team.html index 43c20fa..36f15c2 100644 --- a/templates/mail_templates/validate_team.html +++ b/templates/mail_templates/validate_team.html @@ -9,7 +9,14 @@ Bonjour {{ user }},

Félicitations ! Votre équipe « {{ team }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte à travailler sur vos problèmes et publier vos solutions sur la plateforme. -{{ message }}
+{% if message %} +

+ Le CNO vous adresse le message suivant : +

+ {{ message }} +
+

+{% endif %}
Cordialement,

diff --git a/templates/mail_templates/validate_team.txt b/templates/mail_templates/validate_team.txt new file mode 100644 index 0000000..c693177 --- /dev/null +++ b/templates/mail_templates/validate_team.txt @@ -0,0 +1,13 @@ +Bonjour {{ user }}, + +Félicitations ! Votre équipe « {{ team }} » ({{ team.trigram }}) est désormais validée ! Vous êtes désormais apte à travailler sur +vos problèmes et publier vos solutions sur la plateforme. + +{% if message %} +Le CNO vous adresse le message suivant : +{{ message }} +{% endif %} + +Cordialement, + +Le comité national d'organisation du TFJM²