From f3649280045399b5f77e8a7a005bd32d895e3d38 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Tue, 15 Sep 2020 11:49:05 +0200 Subject: [PATCH] Remove custommail in bda --- bda/admin.py | 21 ++++--- bda/models.py | 94 ++++++++++++++++------------- bda/templates/bda/mails-rappel.html | 7 --- bda/views.py | 47 +++++++++------ 4 files changed, 93 insertions(+), 76 deletions(-) diff --git a/bda/admin.py b/bda/admin.py index 7a981d1c..2aec82c9 100644 --- a/bda/admin.py +++ b/bda/admin.py @@ -1,10 +1,11 @@ from datetime import timedelta -from custommail.shortcuts import send_mass_custom_mail from dal.autocomplete import ModelSelect2 from django import forms from django.contrib import admin +from django.core.mail import send_mass_mail from django.db.models import Count, Q, Sum +from django.template import loader from django.template.defaultfilters import pluralize from django.utils import timezone @@ -169,19 +170,23 @@ class ParticipantAdmin(ReadOnlyMixin, admin.ModelAdmin): form = ParticipantAdminForm def send_attribs(self, request, queryset): - datatuple = [] + emails = [] for member in queryset.all(): + subject = "Résultats du tirage au sort" attribs = member.attributions.all() context = {"member": member.user} - shortname = "" + + template_name = "" if len(attribs) == 0: - shortname = "bda-attributions-decus" + template_name = "bda/mails/attributions-decus.txt" else: - shortname = "bda-attributions" + template_name = "bda/mails/attributions.txt" context["places"] = attribs - print(context) - datatuple.append((shortname, context, "bda@ens.fr", [member.user.email])) - send_mass_custom_mail(datatuple) + + message = loader.render_to_string(template_name, context) + emails.append((subject, message, "bda@ens.fr", [member.user.email])) + + send_mass_mail(emails) count = len(queryset.all()) if count == 1: message_bit = "1 membre a" diff --git a/bda/models.py b/bda/models.py index ffc203ed..80790746 100644 --- a/bda/models.py +++ b/bda/models.py @@ -2,14 +2,14 @@ import calendar import random from datetime import timedelta -from custommail.models import CustomMail -from custommail.shortcuts import send_mass_custom_mail from django.conf import settings from django.contrib.auth.models import User from django.contrib.sites.models import Site from django.core import mail +from django.core.mail import EmailMessage, send_mass_mail from django.db import models from django.db.models import Count, Exists +from django.template import loader from django.utils import formats, timezone @@ -116,16 +116,19 @@ class Spectacle(models.Model): bda_generic.nb_attr = 1 members.append(bda_generic) # On écrit un mail personnalisé à chaque participant - datatuple = [ + mails = [ ( - "bda-rappel", - {"member": member, "nb_attr": member.nb_attr, "show": self}, + str(self), + loader.render_to_string( + "bda/mails/rappel.txt", + context={"member": member, "nb_attr": member.nb_attr, "show": self}, + ), settings.MAIL_DATA["rappels"]["FROM"], [member.email], ) for member in members ] - send_mass_custom_mail(datatuple) + send_mass_mail(mails) # On enregistre le fait que l'envoi a bien eu lieu self.rappel_sent = timezone.now() self.save() @@ -348,21 +351,24 @@ class SpectacleRevente(models.Model): BdA-Revente à tous les intéressés. """ inscrits = self.attribution.spectacle.subscribed.select_related("user") - datatuple = [ + mails = [ ( - "bda-revente", - { - "member": participant.user, - "show": self.attribution.spectacle, - "revente": self, - "site": Site.objects.get_current(), - }, + "BdA-Revente : {}".format(self.attribution.spectacle.title), + loader.render_to_string( + "bda/mails/revente-new.txt", + context={ + "member": participant.user, + "show": self.attribution.spectacle, + "revente": self, + "site": Site.objects.get_current(), + }, + ), settings.MAIL_DATA["revente"]["FROM"], [participant.user.email], ) for participant in inscrits ] - send_mass_custom_mail(datatuple) + send_mass_mail(mails) self.notif_sent = True self.notif_time = timezone.now() self.save() @@ -373,20 +379,23 @@ class SpectacleRevente(models.Model): leur indiquer qu'il est désormais disponible au shotgun. """ inscrits = self.attribution.spectacle.subscribed.select_related("user") - datatuple = [ + mails = [ ( - "bda-shotgun", - { - "member": participant.user, - "show": self.attribution.spectacle, - "site": Site.objects.get_current(), - }, + "BdA-Revente : {}".format(self.attribution.spectacle.title), + loader.render_to_string( + "bda/mails/revente-shotgun.txt", + context={ + "member": participant.user, + "show": self.attribution.spectacle, + "site": Site.objects.get_current(), + }, + ), settings.MAIL_DATA["revente"]["FROM"], [participant.user.email], ) for participant in inscrits ] - send_mass_custom_mail(datatuple) + send_mass_mail(mails) self.notif_sent = True self.notif_time = timezone.now() # Flag inutile, sauf si l'horloge interne merde @@ -418,31 +427,30 @@ class SpectacleRevente(models.Model): "show": spectacle, } - c_mails_qs = CustomMail.objects.filter( - shortname__in=[ - "bda-revente-winner", - "bda-revente-loser", - "bda-revente-seller", - ] - ) - - c_mails = {cm.shortname: cm for cm in c_mails_qs} + subject = "BdA-Revente : {}".format(spectacle.title) mails.append( - c_mails["bda-revente-winner"].get_message( - context, + EmailMessage( + subject=subject, + body=loader.render_to_string( + "bda/mails/revente-tirage-winner.txt", + context=context, + ), from_email=settings.MAIL_DATA["revente"]["FROM"], to=[winner.user.email], ) ) - mails.append( - c_mails["bda-revente-seller"].get_message( - context, + EmailMessage( + subject=subject, + body=loader.render_to_string( + "bda/mails/revente-tirage-seller.txt", + context=context, + ), from_email=settings.MAIL_DATA["revente"]["FROM"], to=[seller.user.email], reply_to=[winner.user.email], - ) + ), ) # Envoie un mail aux perdants @@ -452,11 +460,15 @@ class SpectacleRevente(models.Model): new_context["acheteur"] = inscrit.user mails.append( - c_mails["bda-revente-loser"].get_message( - new_context, + EmailMessage( + subject=subject, + body=loader.render_to_string( + "bda/mails/revente-tirage-loser.txt", + context=new_context, + ), from_email=settings.MAIL_DATA["revente"]["FROM"], to=[inscrit.user.email], - ) + ), ) mail_conn = mail.get_connection() diff --git a/bda/templates/bda/mails-rappel.html b/bda/templates/bda/mails-rappel.html index c10503b0..c0770e47 100644 --- a/bda/templates/bda/mails-rappel.html +++ b/bda/templates/bda/mails-rappel.html @@ -26,13 +26,6 @@
-

- Note : le template de ce mail peut être modifié à - cette adresse -

- -
-

Forme des mails

Une seule place

diff --git a/bda/views.py b/bda/views.py index 25fa97e2..1c54134e 100644 --- a/bda/views.py +++ b/bda/views.py @@ -4,17 +4,17 @@ import random import time from collections import defaultdict -from custommail.models import CustomMail -from custommail.shortcuts import send_custom_mail, send_mass_custom_mail from django.conf import settings from django.contrib import messages from django.core import serializers from django.core.exceptions import NON_FIELD_ERRORS +from django.core.mail import send_mail, send_mass_mail from django.db import transaction from django.db.models import Count, Prefetch from django.forms.models import inlineformset_factory from django.http import HttpResponseBadRequest, HttpResponseRedirect, JsonResponse from django.shortcuts import get_object_or_404, render +from django.template import loader from django.template.defaultfilters import pluralize from django.urls import reverse from django.utils import formats, timezone @@ -400,7 +400,7 @@ def revente_manage(request, tirage_id): if "resell" in request.POST: resellform = ResellForm(participant, request.POST, prefix="resell") if resellform.is_valid(): - datatuple = [] + mails = [] attributions = resellform.cleaned_data["attributions"] with transaction.atomic(): for attribution in attributions: @@ -415,16 +415,17 @@ def revente_manage(request, tirage_id): "show": attribution.spectacle, "revente": revente, } - datatuple.append( + mails.append( ( - "bda-revente-new", - context, + "BdA-Revente : {}".format(attribution.spectacle), + loader.render_to_string( + "bda/mails/revente-seller.txt", context=context + ), settings.MAIL_DATA["revente"]["FROM"], [participant.user.email], ) ) - revente.save() - send_mass_custom_mail(datatuple) + send_mass_mail(mails) # On annule une revente elif "annul" in request.POST: annulform = AnnulForm(participant, request.POST, prefix="annul") @@ -643,12 +644,16 @@ def revente_buy(request, spectacle_id): "acheteur": request.user, "vendeur": revente.seller.user, } - send_custom_mail( - "bda-buy-shotgun", - "bda@ens.fr", + + send_mail( + "BdA-Revente : {}".format(spectacle.title), + loader.render_to_string( + "bda/mails/revente-shotgun-seller.txt", context=context + ), + request.user.email, [revente.seller.user.email], - context=context, ) + return render( request, "bda/revente/mail-success.html", @@ -751,19 +756,21 @@ class UnpaidParticipants(BuroRequiredMixin, ListView): def send_rappel(request, spectacle_id): show = get_object_or_404(Spectacle, id=spectacle_id) # Mails d'exemples - custommail = CustomMail.objects.get(shortname="bda-rappel") - exemple_mail_1place = custommail.render( - {"member": request.user, "show": show, "nb_attr": 1} + subject = show.title + body_mail_1place = loader.render_to_string( + "bda/mails/rappel.txt", + context={"member": request.user, "show": show, "nb_attr": 1}, ) - exemple_mail_2places = custommail.render( - {"member": request.user, "show": show, "nb_attr": 2} + body_mail_2places = loader.render_to_string( + "bda/mails/rappel.txt", + context={"member": request.user, "show": show, "nb_attr": 2}, ) + # Contexte ctxt = { "show": show, - "exemple_mail_1place": exemple_mail_1place, - "exemple_mail_2places": exemple_mail_2places, - "custommail": custommail, + "exemple_mail_1place": (subject, body_mail_1place), + "exemple_mail_2places": (subject, body_mail_2places), } # Envoi confirmé if request.method == "POST":