# Generated by Django 6.0.4 on 2026-07-29 12:34, 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')
    Event = apps.get_model('events', 'Event')
    EventBlocklist = apps.get_model('events', 'EventBlocklist')
    EventSettings = apps.get_model('events', 'EventSettings')
    EventTemplate = apps.get_model('events', 'EventTemplate')
    InvitationTemplate = apps.get_model('events', 'InvitationTemplate')
    OfficeCalendarEntry = apps.get_model('events', 'OfficeCalendarEntry')
    RegistrationForm = apps.get_model('events', 'RegistrationForm')

    org = Organization.objects.first()
    if org is None:
        return
    Event.objects.filter(organization__isnull=True).update(organization=org)
    EventBlocklist.objects.filter(organization__isnull=True).update(organization=org)
    EventTemplate.objects.filter(organization__isnull=True).update(organization=org)
    InvitationTemplate.objects.filter(organization__isnull=True).update(organization=org)
    OfficeCalendarEntry.objects.filter(organization__isnull=True).update(organization=org)
    RegistrationForm.objects.filter(organization__isnull=True).update(organization=org)
    if not EventSettings.objects.filter(organization=org).exists():
        EventSettings.objects.filter(organization__isnull=True).update(organization=org)


def noop_reverse(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('companies', '0012_add_organization_scope'),
        ('events', '0009_remove_event_project'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.RemoveConstraint(
            model_name='eventblocklist',
            name='uniq_blocklist_email_event',
        ),
        migrations.AddField(
            model_name='event',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='events', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='eventblocklist',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_blocklist_entries', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='eventsettings',
            name='organization',
            field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_settings', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='eventtemplate',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='event_templates', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='invitationtemplate',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='invitation_templates', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='officecalendarentry',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='office_calendar_entries', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='registrationform',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registration_forms', to='companies.organization'),
        ),
        migrations.AddConstraint(
            model_name='eventblocklist',
            constraint=models.UniqueConstraint(fields=('organization', 'email', 'event'), name='uniq_blocklist_email_event'),
        ),
        migrations.RunPython(backfill_organization, noop_reverse),
        migrations.AlterField(
            model_name='event',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='events', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='eventblocklist',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_blocklist_entries', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='eventsettings',
            name='organization',
            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='event_settings', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='eventtemplate',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_templates', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='invitationtemplate',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='invitation_templates', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='officecalendarentry',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='office_calendar_entries', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='registrationform',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='registration_forms', to='companies.organization'),
        ),
    ]
