Move bda.get_generic_user + optimize send_rappels

This commit is contained in:
Martin Pépin 2017-06-18 16:52:53 +01:00
parent 5c11893059
commit 69aee6b8ac
2 changed files with 21 additions and 24 deletions

View file

@ -1,10 +1 @@
from django.contrib.auth.models import User
def get_generic_user():
generic, created = User.objects.get_or_create(username="bda_generic")
if created:
generic.email = "bda@ens.fr"
generic.first_name = "Bureau des Arts"
generic.save()
return generic

View file

@ -7,11 +7,18 @@ from custommail.shortcuts import send_mass_custom_mail
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.db import models from django.db import models
from django.db.models import Count
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.conf import settings from django.conf import settings
from django.utils import timezone, formats from django.utils import timezone, formats
from . import get_generic_user
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): class Tirage(models.Model):
@ -98,30 +105,29 @@ class Spectacle(models.Model):
Envoie un mail de rappel à toutes les personnes qui ont une place pour Envoie un mail de rappel à toutes les personnes qui ont une place pour
ce spectacle. ce spectacle.
""" """
# On récupère la liste des participants # On récupère la liste des participants + le BdA
members = {} members = list(
for attr in Attribution.objects.filter(spectacle=self).all(): User.objects
member = attr.participant.user .filter(participant__attributions=self)
if member.id in members: .annotate(nb_attr=Count("id")).order_by()
members[member.id][1] = 2 )
else:
members[member.id] = [member, 1]
# On écrit un mail personnalisé à chaque participant
bda_generic = get_generic_user() bda_generic = get_generic_user()
members[-1] = [bda_generic, 1] bda_generic.nb_attr = 1
members.append(bda_generic)
# On écrit un mail personnalisé à chaque participant
datatuple = [( datatuple = [(
'bda-rappel', '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'], settings.MAIL_DATA['rappels']['FROM'],
[member[0].email]) [member.email])
for member in members.values() for member in members
] ]
send_mass_custom_mail(datatuple) send_mass_custom_mail(datatuple)
# On enregistre le fait que l'envoi a bien eu lieu # On enregistre le fait que l'envoi a bien eu lieu
self.rappel_sent = timezone.now() self.rappel_sent = timezone.now()
self.save() self.save()
# On renvoie la liste des destinataires # On renvoie la liste des destinataires
return map(lambda t: t[0], members.values()) return members
@property @property
def is_past(self): def is_past(self):