Source code for intranet.apps.eighth.management.commands.remove_withdrawn_students

#!/usr/bin/env python3

from django.conf import settings
from django.core.management.base import BaseCommand
from django.utils import timezone

from intranet.apps.groups.models import Group
from intranet.apps.notifications.tasks import email_send_task


[docs]class Command(BaseCommand): help = "Withdraw students from TJ automatically && notify relevant administrators"
[docs] def handle(self, *args, **options): data = [] NOTIFY_EMAILS = settings.NOTIFY_ADMIN_EMAILS try: group = Group.objects.get(name="Withdrawn from TJ", id=9) except Group.DoesNotExist: self.stdout.write("Withdrawn group could not be found.\n") return if not group.user_set.all().exists(): self.stdout.write("No users found in withdrawn group.\n") return base_url = "https://ion.tjhsst.edu" data = { "withdrawn_group_str": str(group), "users": [f"{u.full_name} ({u.username})" for u in group.user_set.all()], "help_email": settings.FEEDBACK_EMAIL, "base_url": base_url, "info_link": base_url, } self.stdout.write(str(data) + "\n") if NOTIFY_EMAILS: email_send_task.delay( "eighth/emails/withdrawn_students.txt", "eighth/emails/withdrawn_students.html", data, f"Withdrawn Students on {timezone.localdate()}", NOTIFY_EMAILS, ) for user in group.user_set.all(): self.stdout.write(f"Deleting {user}\n") user.handle_delete() self.stdout.write(str(user.delete()) + "\n")