add flags to the dump warning mail command

This commit is contained in:
imperosol 2024-10-20 12:19:00 +02:00
parent 03afd49115
commit 9675b6372c
2 changed files with 33 additions and 3 deletions

View File

@ -1,4 +1,5 @@
import logging import logging
import time
from smtplib import SMTPException from smtplib import SMTPException
from django.conf import settings from django.conf import settings
@ -25,9 +26,34 @@ class Command(BaseCommand):
self.logger.setLevel(logging.INFO) self.logger.setLevel(logging.INFO)
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
def add_arguments(self, parser):
parser.add_argument(
"--dry-run",
action="store_true",
help="Do not send the mails, just display the number of users concerned",
)
parser.add_argument(
"-d",
"--delay",
type=float,
default=0,
help="Delay in seconds between each mail sent",
)
def handle(self, *args, **options): def handle(self, *args, **options):
users = list(self._get_users()) users: list[User] = list(self._get_users())
self.stdout.write(f"{len(users)} users will be warned of their account dump") self.stdout.write(f"{len(users)} users will be warned of their account dump")
if options["verbosity"] > 1:
self.stdout.write("Users concerned:\n")
self.stdout.write(
"\n".join(
f" - {user.get_display_name()} ({user.email}) : "
f"{user.customer.amount}"
for user in users
)
)
if options["dry_run"]:
return
dumps = [] dumps = []
for user in users: for user in users:
is_success = self._send_mail(user) is_success = self._send_mail(user)
@ -38,6 +64,10 @@ class Command(BaseCommand):
warning_mail_error=not is_success, warning_mail_error=not is_success,
) )
) )
if options["delay"]:
# avoid spamming the mail server too much
time.sleep(options["delay"])
AccountDump.objects.bulk_create(dumps) AccountDump.objects.bulk_create(dumps)
self.stdout.write("Finished !") self.stdout.write("Finished !")

View File

@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-10-20 11:06+0200\n" "POT-Creation-Date: 2024-10-20 12:20+0200\n"
"PO-Revision-Date: 2016-07-18\n" "PO-Revision-Date: 2016-07-18\n"
"Last-Translator: Maréchal <thomas.girod@utbm.fr\n" "Last-Translator: Maréchal <thomas.girod@utbm.fr\n"
"Language-Team: AE info <ae.info@utbm.fr>\n" "Language-Team: AE info <ae.info@utbm.fr>\n"
@ -3629,7 +3629,7 @@ msgstr "Produit parent"
msgid "Buying groups" msgid "Buying groups"
msgstr "Groupes d'achat" msgstr "Groupes d'achat"
#: counter/management/commands/dump_warning_mail.py:82 #: counter/management/commands/dump_warning_mail.py:112
msgid "Clearing of your AE account" msgid "Clearing of your AE account"
msgstr "Vidange de votre compte AE" msgstr "Vidange de votre compte AE"