import datetime from django import forms from django.contrib.admin.views.decorators import staff_member_required from django.http import HttpResponseRedirect, HttpResponse from django.shortcuts import render from coord.models import Traveller # Any active year 12 without exit date set exit date before today # Any user active user with exit date before today > Archive # Any active user (not adult learner) increase year by 1 def previous_rollover_date(): today = datetime.date.today() return datetime.date(year=today.year - 1, month=12, day=31) class RolloverForm(forms.Form): exit_date = forms.DateField(initial=previous_rollover_date) agreement = forms.BooleanField(label='I have run an export/backup for travellers') def execute_rollover(exit_date): print(f"Setting exit date {exit_date}") result = Traveller.objects.filter(year_level='12', travel_end_date=None).update(travel_end_date=exit_date) print(f"{result} Year 12s exited") today = datetime.date.today().strftime('%Y-%m-%d') result = Traveller.objects.filter(travel_end_date__lt=today, is_archived=False).update(is_archived=True) print(f"{result} travellers archived") result = Traveller.objects.filter(is_archived=False, year_level='11').update(year_level='12') result += Traveller.objects.filter(is_archived=False, year_level='10').update(year_level='11') result += Traveller.objects.filter(is_archived=False, year_level='09').update(year_level='10') result += Traveller.objects.filter(is_archived=False, year_level='08').update(year_level='09') result += Traveller.objects.filter(is_archived=False, year_level='07').update(year_level='08') result += Traveller.objects.filter(is_archived=False, year_level='06').update(year_level='07') result += Traveller.objects.filter(is_archived=False, year_level='05').update(year_level='06') result += Traveller.objects.filter(is_archived=False, year_level='04').update(year_level='05') result += Traveller.objects.filter(is_archived=False, year_level='03').update(year_level='04') result += Traveller.objects.filter(is_archived=False, year_level='02').update(year_level='03') result += Traveller.objects.filter(is_archived=False, year_level='01').update(year_level='02') result += Traveller.objects.filter(is_archived=False, year_level='00').update(year_level='01') result += Traveller.objects.filter(is_archived=False, year_level='PS').update(year_level='00') print(f"{result} travellers modified")