On n'envoie des mails de rappel que lorsque le négatif est toujours d'actualité
This commit is contained in:
parent
1ad025e046
commit
87f383bef1
1 changed files with 17 additions and 9 deletions
|
@ -19,23 +19,31 @@ class Command(BaseCommand):
|
|||
|
||||
def handle(self, *args, **options):
|
||||
now = timezone.now()
|
||||
|
||||
# Le premier mail est envoyé après 24h de négatif, puis toutes les semaines
|
||||
first_delay = timedelta(days=1)
|
||||
periodic_delay = timedelta(weeks=1)
|
||||
accounts_first_mail = (
|
||||
AccountNegative.objects.filter(start__lt=now - first_delay)
|
||||
.filter(last_rappel__isnull=True)
|
||||
.all()
|
||||
|
||||
# On n'envoie des mails qu'aux comptes qui ont un négatif vraiment actif
|
||||
# et dont la balance est négative
|
||||
account_negatives = AccountNegative.objects.filter(
|
||||
account__balance__lt=0
|
||||
).exclude(end__lte=now)
|
||||
|
||||
accounts_first_mail = account_negatives.filter(
|
||||
start__lt=now - first_delay, last_rappel__isnull=True
|
||||
)
|
||||
accounts_periodic_mail = (
|
||||
AccountNegative.objects.filter(last_rappel__isnull=False)
|
||||
.filter(last_rappel__lt=now - periodic_delay)
|
||||
.all()
|
||||
accounts_periodic_mail = account_negatives.filter(
|
||||
last_rappel__isnull=False, last_rappel__lt=now - periodic_delay
|
||||
)
|
||||
|
||||
for neg in accounts_first_mail:
|
||||
neg.send_rappel()
|
||||
self.stdout.write(f"Mail de rappel pour {neg.account} envoyé avec succès.")
|
||||
|
||||
for neg in accounts_periodic_mail:
|
||||
neg.send_rappel()
|
||||
self.stdout.write("Mail de rappel pour {neg.account} envoyé avec succès.")
|
||||
if (not accounts_first_mail) and (not accounts_periodic_mail):
|
||||
|
||||
if not (accounts_first_mail.exists() or accounts_periodic_mail.exists()):
|
||||
self.stdout.write("Aucun mail à envoyer.")
|
||||
|
|
Loading…
Reference in a new issue