# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay # SPDX-License-Identifier: GPL-3.0-or-later from datetime import date from django.core.mail import send_mail from django.core.management import BaseCommand from django.template.loader import render_to_string from django.utils.translation import activate from note.models import NoteUser class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument("--spam", "-s", action='store_true', help="Spam negative users") parser.add_argument("--report", "-r", action='store_true', help="Report the list of negative users to admins") parser.add_argument("--negative-amount", "-n", action='store', type=int, default=1000, help="Maximum amount to be considered as very negative") def handle(self, *args, **options): activate('fr') notes = NoteUser.objects.filter( balance__lte=-options["negative_amount"], user__memberships__date_end__gte=date.today(), ).order_by('balance').distinct().all() if options["spam"]: for note in notes: note.send_mail_negative_balance() if options["report"]: plain_text = render_to_string("note/mails/negative_notes_report.txt", context=dict(notes=notes)) html = render_to_string("note/mails/negative_notes_report.html", context=dict(notes=notes)) send_mail("[Note Kfet] Liste des négatifs", plain_text, "Note Kfet 2020 ", recipient_list=["respo-info.bde@lists.crans.org", "tresorerie.bde@lists.crans.org"], html_message=html)