Send mails

This commit is contained in:
Yohann D'ANELLO 2020-05-05 17:12:24 +02:00
parent c9b198cd3d
commit f9dc0e57ad
9 changed files with 77 additions and 27 deletions

View File

@ -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

View File

@ -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/<int:pk>/", PoolDetailView.as_view(), name="pool_detail"),
]

View File

@ -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)

View File

@ -6,11 +6,11 @@
<title>Demande de validation - TFJM²</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br />
Bonjour {{ user }},<br />
<br />
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 :
<a href="{URL_BASE}/equipe/{TRIGRAM}">{URL_BASE}/equipe/{TRIGRAM}</a><br/>
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 :
<a href="{% url "tournament:team_detail" pk=team.pk %}">{% url "tournament:team_detail" pk=team.pk %}</a><br/>
<br/>
Cordialement,<br/>
<br />

View File

@ -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 :
<a href="{% url "tournament:team_detail" pk=team.pk %}">{% url "tournament:team_detail" pk=team.pk %}</a>
Cordialement,
Le comité national d'organisation du TFJM²

View File

@ -2,15 +2,22 @@
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Équipe non validée TFJM² {YEAR}</title>
<title>Équipe non validée TFJM²</title>
</head>
<body>
Bonjour {FIRST_NAME} {SURNAME},<br/>
Bonjour {{ user }},<br/>
<br/>
Maleureusement, votre équipe « {TEAM_NAME} » ({TRIGRAM}) n'a pas été validée. Veuillez vérifier que vos autorisations sont correctes.
{MESSAGE}<br />
Maleureusement, votre équipe « {{ team.name }} » ({{ team.trigram }}) n'a pas été validée. Veuillez vérifier que vos autorisations sont correctes.
{% if message %}
<p>
Le CNO vous adresse le message suivant :
<div>
{{ message }}
</div>
</p>
{% endif %}
<br />
N'hésitez pas à nous contacter à l'adresse <a href="contact@tfjm.org">contact@tfjm.org</a> pour plus d'informations.
N'hésitez pas à nous contacter à l'adresse <a href="mailto:contact@tfjm.org">contact@tfjm.org</a> pour plus d'informations.
<br/>
Cordialement,<br/>
<br/>

View File

@ -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²

View File

@ -9,7 +9,14 @@ Bonjour {{ user }},<br/>
<br/>
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 }}<br />
{% if message %}
<p>
Le CNO vous adresse le message suivant :
<div>
{{ message }}
</div>
</p>
{% endif %}
<br/>
Cordialement,<br/>
<br/>

View File

@ -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²