diff --git a/bda/mails.py b/bda/mails.py new file mode 100644 index 00000000..a8736d54 --- /dev/null +++ b/bda/mails.py @@ -0,0 +1,61 @@ +# coding: utf-8 + +from django.shortcuts import get_object_or_404, render +from django.core import mail +from django.template import loader, Context + +from gestioncof.decorators import buro_required + +from bda.models import Spectacle, Attribution + +RAPPEL_FROM = 'Le BdA ' +RAPPEL_REPLY_TO = RAPPEL_FROM + +def render_template(template_name, data): + tmpl = loader.get_template(template_name) + ctxt = Context(data) + return tmpl.render(ctxt) + +@buro_required +def send_rappel(request, spectacle_id): + # On récupère la liste des participants + show = get_object_or_404(Spectacle, id=spectacle_id) + members = {} + for attr in Attribution.objects.filter(spectacle=show).all(): + member = attr.participant.user + if member.id in members: + members[member.id].nb_attr = 2 + else: + member.nb_attr = 1 + members[member.id] = member + # On écrit un mail personnalisé à chaque participant + mails_to_send = [] + mail_object = "%s - %s - %s" % (show.title, show.date_no_seconds(), + show.location) + for member in members.values(): + mail_body = render_template('mail-rappel.txt', { + 'member': member, + 'show': show}) + mail_tot = mail.EmailMessage(mail_object, mail_body, + RAPPEL_FROM, [member.email], + [], headers={'Reply-To': RAPPEL_REPLY_TO}) + mails_to_send.append(mail_tot) + # On envoie les mails + connection = mail.get_connection(fail_silently=True) + connection.send_messages(mails_to_send) + # Mails d'exemples + fake_member = request.user + fake_member.nb_attr = 1 + example1 = render_template('mail-rappel.txt', { + 'member': fake_member, + 'show': show}) + fake_member.nb_attr = 2 + example2 = render_template('mail-rappel.txt', { + 'member': fake_member, + 'show': show}) + return render(request, "mails-rappel-sent.html", { + 'members': members.values(), + 'show': show, + 'example1': example1, + 'example2': example2}) + diff --git a/bda/templates/mail-rappel.txt b/bda/templates/mail-rappel.txt new file mode 100644 index 00000000..094abaea --- /dev/null +++ b/bda/templates/mail-rappel.txt @@ -0,0 +1,21 @@ +Bonjour {{ member.get_full_name }}, + +Nous te rappellons que tu as eu la chance d'obtenir {{ member.nb_attr|pluralize:"une place,deux places" }} +pour {{ show.title }}, le {{ show.date_no_seconds }} au {{ show.location }}. N'oublie pas de t'y rendre ! +{% if member.nb_attr == 2 %} +Tu as obtenu deux places pour ce spectacle. Nous te rappelons que +ces places sont strictement réservées aux personnes de moins de 28 ans. +{% endif %} +SI BILLETS DISTRIBUÉS Pour assister à ce spectacle, tu dois présenter les billets qui ont +été distribués au burô. OU BIEN SI LISTING Pour ce spectacle, tu as reçu des places sur +listing. Il te faudra donc te rendre 15 minutes en avance sur les lieux de la représentation +pour retirer {{ member.nb_attr|pluralize:"ta place,tes places" }}. + +Si tu ne peux plus assister à cette représentation, tu peux +revendre ta place via BdA-revente, accessible directement sur +GestioCOF (lien "revendre une place du premier tirage" sur la page +d'accueil https://www.cof.ens.fr/gestion/). + +En te souhaitant un excellent spectacle, + +Le Bureau des Arts diff --git a/bda/templates/mails-rappel-sent.html b/bda/templates/mails-rappel-sent.html new file mode 100644 index 00000000..d8961aeb --- /dev/null +++ b/bda/templates/mails-rappel-sent.html @@ -0,0 +1,17 @@ +{% extends "base_title.html" %} + +{% block realcontent %} +

Les mails de rappel pour le spectacle {{ show.title }} ont bien été envoyés aux personnes suivantes

+ +

Forme des mails envoyés

+ +
Une seule place

+
{{ example1 }}
+ +
Deux places

+
{{ example2 }}
+{% endblock %} diff --git a/cof/urls.py b/cof/urls.py index 3a7680d6..aeba4fa2 100644 --- a/cof/urls.py +++ b/cof/urls.py @@ -52,6 +52,7 @@ urlpatterns = patterns('', url(r'^bda/spectacles/(?P\d+)/(?P\d+)$', "bda.views.spectacle", name = "bda-spectacle"), url(r'^bda/spectacles-ics/(?P\d+)$', 'bda.views.liste_spectacles_ics', name ="bda-liste-spectacles-ics"), url(r'^bda/spectacles/unpaid/(?P\d+)$', "bda.views.unpaid", name = "bda-unpaid"), + url(r'bda/mails-rappel/(?P\d+)$', "bda.mails.send_rappel"), url(r'^survey/(?P\d+)$', 'gestioncof.views.survey'), url(r'^event/(?P\d+)$', 'gestioncof.views.event'), url(r'^survey/(?P\d+)/status$', 'gestioncof.views.survey_status'),