# Generated by Django 6.0.4 on 2026-07-30 07:56, hand-adjusted:
# backfill organization to the bootstrapped CSIS org, then tighten to non-null.

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


def backfill_organization(apps, schema_editor):
    Organization = apps.get_model('companies', 'Organization')
    Announcement = apps.get_model('administrations', 'Announcement')
    CarBooking = apps.get_model('administrations', 'CarBooking')
    DocumentRequest = apps.get_model('administrations', 'DocumentRequest')
    HelpdeskTicket = apps.get_model('administrations', 'HelpdeskTicket')
    InternalGuide = apps.get_model('administrations', 'InternalGuide')
    LetterNumber = apps.get_model('administrations', 'LetterNumber')
    LetterPrefix = apps.get_model('administrations', 'LetterPrefix')
    PaymentRequest = apps.get_model('administrations', 'PaymentRequest')
    Reimbursement = apps.get_model('administrations', 'Reimbursement')
    ReimbursementReceipt = apps.get_model('administrations', 'ReimbursementReceipt')
    SOP = apps.get_model('administrations', 'SOP')
    SOPCategory = apps.get_model('administrations', 'SOPCategory')

    org = Organization.objects.first()
    if org is None:
        return
    Announcement.objects.filter(organization__isnull=True).update(organization=org)
    CarBooking.objects.filter(organization__isnull=True).update(organization=org)
    DocumentRequest.objects.filter(organization__isnull=True).update(organization=org)
    HelpdeskTicket.objects.filter(organization__isnull=True).update(organization=org)
    InternalGuide.objects.filter(organization__isnull=True).update(organization=org)
    LetterNumber.objects.filter(organization__isnull=True).update(organization=org)
    LetterPrefix.objects.filter(organization__isnull=True).update(organization=org)
    PaymentRequest.objects.filter(organization__isnull=True).update(organization=org)
    Reimbursement.objects.filter(organization__isnull=True).update(organization=org)
    ReimbursementReceipt.objects.filter(organization__isnull=True).update(organization=org)
    SOP.objects.filter(organization__isnull=True).update(organization=org)
    SOPCategory.objects.filter(organization__isnull=True).update(organization=org)


def noop_reverse(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('administrations', '0009_documentrequest_needed_by'),
        ('companies', '0012_add_organization_scope'),
        ('hr', '0012_add_organization_scope'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AlterUniqueTogether(
            name='letternumber',
            unique_together=set(),
        ),
        migrations.RemoveField(
            model_name='documentrequest',
            name='needed_by',
        ),
        migrations.AddField(
            model_name='announcement',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='announcements', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='carbooking',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='car_bookings', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='documentrequest',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='document_requests', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='helpdeskticket',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='helpdesk_tickets', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='internalguide',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='internal_guides', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='letternumber',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='letter_numbers', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='letterprefix',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='letter_prefixes', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='paymentrequest',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='payment_requests', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='reimbursement',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reimbursements', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='reimbursementreceipt',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reimbursement_receipts', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='sop',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sops', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='sopcategory',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sop_categories', to='companies.organization'),
        ),
        migrations.RunPython(backfill_organization, noop_reverse),
        migrations.AlterField(
            model_name='helpdeskticket',
            name='ticket_number',
            field=models.CharField(blank=True, max_length=20),
        ),
        migrations.AlterField(
            model_name='letterprefix',
            name='code',
            field=models.CharField(help_text='Short code shown in the number, e.g. EKON.', max_length=20),
        ),
        migrations.AlterField(
            model_name='sop',
            name='code',
            field=models.CharField(max_length=50),
        ),
        migrations.AlterField(
            model_name='sopcategory',
            name='name',
            field=models.CharField(max_length=100),
        ),
        migrations.AlterField(
            model_name='announcement',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='announcements', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='carbooking',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='car_bookings', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='documentrequest',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_requests', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='helpdeskticket',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='helpdesk_tickets', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='internalguide',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='internal_guides', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='letternumber',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='letter_numbers', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='letterprefix',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='letter_prefixes', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='paymentrequest',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='payment_requests', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='reimbursement',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reimbursements', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='reimbursementreceipt',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reimbursement_receipts', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='sop',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sops', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='sopcategory',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sop_categories', to='companies.organization'),
        ),
        migrations.AddConstraint(
            model_name='helpdeskticket',
            constraint=models.UniqueConstraint(fields=('organization', 'ticket_number'), name='unique_helpdesk_ticket_number_per_org'),
        ),
        migrations.AddConstraint(
            model_name='letternumber',
            constraint=models.UniqueConstraint(fields=('organization', 'prefix', 'year', 'sequence'), name='unique_letter_number_per_org'),
        ),
        migrations.AddConstraint(
            model_name='letterprefix',
            constraint=models.UniqueConstraint(fields=('organization', 'code'), name='unique_letter_prefix_code_per_org'),
        ),
        migrations.AddConstraint(
            model_name='sop',
            constraint=models.UniqueConstraint(fields=('organization', 'code'), name='unique_sop_code_per_org'),
        ),
        migrations.AddConstraint(
            model_name='sopcategory',
            constraint=models.UniqueConstraint(fields=('organization', 'name'), name='unique_sop_category_name_per_org'),
        ),
    ]
