from django.db import migrations from django.utils import timezone def backfill_sent_to_department(apps, schema_editor): Complaint = apps.get_model("complaints", "Complaint") Inquiry = apps.get_model("complaints", "Inquiry") CID = apps.get_model("complaints", "ComplaintInvolvedDepartment") Complaint.objects.filter(department__isnull=False).update(sent_to_department=True) Complaint.objects.filter( sent_to_department=True, sent_to_department_at__isnull=True, forwarded_to_dept_at__isnull=False, ).update(sent_to_department_at=models.F("forwarded_to_dept_at")) Complaint.objects.filter( sent_to_department=True, sent_to_department_at__isnull=True ).update(sent_to_department_at=timezone.now()) Inquiry.objects.filter(department__isnull=False).update(sent_to_department=True) Inquiry.objects.filter( sent_to_department=True, sent_to_department_at__isnull=True, transferred_at__isnull=False, ).update(sent_to_department_at=models.F("transferred_at")) Inquiry.objects.filter( sent_to_department=True, sent_to_department_at__isnull=True ).update(sent_to_department_at=timezone.now()) CID.objects.filter(forwarded_at__isnull=False).update(sent=True) CID.objects.filter(sent=True, sent_at__isnull=True).update( sent_at=models.F("forwarded_at") ) CID.objects.filter(sent=True, sent_at__isnull=True).update( sent_at=timezone.now() ) def reverse_backfill(apps, schema_editor): Complaint = apps.get_model("complaints", "Complaint") Inquiry = apps.get_model("complaints", "Inquiry") CID = apps.get_model("complaints", "ComplaintInvolvedDepartment") Complaint.objects.all().update( sent_to_department=False, sent_to_department_at=None ) Inquiry.objects.all().update( sent_to_department=False, sent_to_department_at=None ) CID.objects.all().update(sent=False, sent_at=None) from django.db import models class Migration(migrations.Migration): dependencies = [ ("complaints", "0005_add_sent_to_department_fields"), ] operations = [ migrations.RunPython(backfill_sent_to_department, reverse_backfill), ]