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²