diff --git a/bda/__init__.py b/bda/__init__.py index e69de29b..8b137891 100644 --- a/bda/__init__.py +++ b/bda/__init__.py @@ -0,0 +1 @@ + diff --git a/bda/models.py b/bda/models.py index 0228b4c0..41462d70 100644 --- a/bda/models.py +++ b/bda/models.py @@ -7,11 +7,20 @@ from custommail.shortcuts import send_mass_custom_mail from django.contrib.sites.models import Site from django.db import models +from django.db.models import Count from django.contrib.auth.models import User from django.conf import settings from django.utils import timezone, formats +def get_generic_user(): + generic, _ = User.objects.get_or_create( + username="bda_generic", + defaults={"email": "bda@ens.fr", "first_name": "Bureau des arts"} + ) + return generic + + class Tirage(models.Model): title = models.CharField("Titre", max_length=300) ouverture = models.DateTimeField("Date et heure d'ouverture du tirage") @@ -96,32 +105,29 @@ class Spectacle(models.Model): Envoie un mail de rappel à toutes les personnes qui ont une place pour ce spectacle. """ - # On récupère la liste des participants - members = {} - for attr in Attribution.objects.filter(spectacle=self).all(): - member = attr.participant.user - if member.id in members: - members[member.id][1] = 2 - else: - members[member.id] = [member, 1] - # FIXME : faire quelque chose de ça, un utilisateur bda_generic ? - # # Pour le BdA - # members[0] = ['BdA', 1, 'bda@ens.fr'] - # members[-1] = ['BdA', 2, 'bda@ens.fr'] + # On récupère la liste des participants + le BdA + members = list( + User.objects + .filter(participant__attributions=self) + .annotate(nb_attr=Count("id")).order_by() + ) + bda_generic = get_generic_user() + bda_generic.nb_attr = 1 + members.append(bda_generic) # On écrit un mail personnalisé à chaque participant datatuple = [( 'bda-rappel', - {'member': member[0], 'nb_attr': member[1], 'show': self}, + {'member': member, "nb_attr": member.nb_attr, 'show': self}, settings.MAIL_DATA['rappels']['FROM'], - [member[0].email]) - for member in members.values() + [member.email]) + for member in members ] send_mass_custom_mail(datatuple) # On enregistre le fait que l'envoi a bien eu lieu self.rappel_sent = timezone.now() self.save() # On renvoie la liste des destinataires - return members.values() + return members @property def is_past(self): diff --git a/bda/templates/bda/mails-rappel.html b/bda/templates/bda/mails-rappel.html index 73625d1c..c10503b0 100644 --- a/bda/templates/bda/mails-rappel.html +++ b/bda/templates/bda/mails-rappel.html @@ -3,41 +3,46 @@ {% block realcontent %}

Mails de rappels

{% if sent %} -

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

- +

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

+ {% else %} -

Voulez vous envoyer les mails de rappel pour le spectacle - {{ show.title }} ?

- {% if show.rappel_sent %} -

Attention, les mails ont déjà été envoyés le - {{ show.rappel_sent }}

- {% endif %} +

Voulez vous envoyer les mails de rappel pour le spectacle {{ show.title }} ?

{% endif %} - {% if not sent %} -
- {% csrf_token %} -
- -
-
- {% endif %} +
+ {% if not sent %} +
+ {% csrf_token %} +
+ +
+
+ {% endif %} +
+ +
+ +

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

+ +
-
-

Forme des mails

Une seule place

- {% for part in exemple_mail_1place %} -
{{ part }}
- {% endfor %} + {% for part in exemple_mail_1place %} +
{{ part }}
+ {% endfor %}

Deux places

{% for part in exemple_mail_2places %} -
{{ part }}
+
{{ part }}
{% endfor %} + {% endblock %} diff --git a/bda/templates/bda-participants.html b/bda/templates/bda/participants.html similarity index 77% rename from bda/templates/bda-participants.html rename to bda/templates/bda/participants.html index 289d1761..85af4a2e 100644 --- a/bda/templates/bda-participants.html +++ b/bda/templates/bda/participants.html @@ -36,17 +36,26 @@

Ajouter une attribution

-
- - -
- - + + +
+ Page d'envoi manuel des mails de rappel +
+