mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-16 21:12:13 +00:00
Currently performs two functions: 1. Inactivates users that have not logged in for at least one year. Closes #478 (Need to circle back round to full deletion SoonTM) 2. Ensures the supervisor database flag is set correctly for each user This is run automatically by the Heroku Scheduler addon at midnight daily.
27 lines
1.2 KiB
Python
27 lines
1.2 KiB
Python
from datetime import datetime, timedelta
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
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 (or have never logged in)
|
|
if person.last_login is None or (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()
|