from django.core.management.base import BaseCommand from django.utils import timezone from RIGS.models import Profile from training.models import TrainingLevel # This is triggered nightly by Heroku Scheduler class Command(BaseCommand): help = "Performs perodic user maintenance tasks" def handle(self, *args, **options): for person in Profile.objects.all(): # Inactivate users that have not logged in for a year if person.last_login is not None and (timezone.now() - person.last_login).days > 365: person.is_active = False person.is_approved = False person.save() # Ensure everyone with a supervisor level has the flag correctly set in the database if ( person.level_qualifications.exclude(confirmed_on=None) .select_related("level") .filter(level__level__gte=TrainingLevel.SUPERVISOR) .exclude(level__department=TrainingLevel.HAULAGE) .exclude(level__department__isnull=True) .exists() ): person.is_supervisor = True person.save()