Ajoute une commande pour les mails de rappel

Les mails de rappel pour les spectacles à venir (dans les 4 jours)
peuvent être envoyés à l'aide de la commande
`python manage.py sendrappels`
Il suffit donc de mettre un cron qui lance cette commande à un intervalle
régulier pour ne plus avoir à se soucier des mails de rappel.

Fixes #1
This commit is contained in:
Martin Pépin 2016-07-12 20:35:42 +02:00
parent ec2079c417
commit ce03a28b4b
3 changed files with 30 additions and 0 deletions

View file

View file

View file

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.core.management.base import BaseCommand
from django.utils import timezone
from datetime import timedelta
from bda.models import Spectacle
class Command(BaseCommand):
help = 'Envoie les mails de rappel des spectacles dont la date ' \
'approche.\nNe renvoie pas les mails déjà envoyés.'
def handle(self, *args, **options):
now = timezone.now()
delay = timedelta(4)
shows = Spectacle.objects \
.filter(date__range=(now, now+delay)) \
.filter(tirage__active=True) \
.filter(rappel_sent__isnull=True) \
.all()
for show in shows:
show.send_rappel()
show.rappel_sent = now
show.save()
self.stdout.write(
'Mails de rappels pour %s envoyés avec succès.' % show)
if not shows:
self.stdout.write('Aucun mail à envoyer.')