1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-06-21 14:38:24 +02:00

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)