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:
parent
ec2079c417
commit
ce03a28b4b
3 changed files with 30 additions and 0 deletions
0
bda/management/__init__.py
Normal file
0
bda/management/__init__.py
Normal file
0
bda/management/commands/__init__.py
Normal file
0
bda/management/commands/__init__.py
Normal file
30
bda/management/commands/sendrappels.py
Normal file
30
bda/management/commands/sendrappels.py
Normal 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.')
|
Loading…
Reference in a new issue