# 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.db import migrations, models


def backfill_organization(apps, schema_editor):
    Organization = apps.get_model('companies', 'Organization')
    Author = apps.get_model('publications', 'Author')
    ExternalPublication = apps.get_model('publications', 'ExternalPublication')
    Publication = apps.get_model('publications', 'Publication')
    PublicationCategory = apps.get_model('publications', 'PublicationCategory')
    Submission = apps.get_model('publications', 'Submission')

    org = Organization.objects.first()
    if org is None:
        return
    Author.objects.filter(organization__isnull=True).update(organization=org)
    ExternalPublication.objects.filter(organization__isnull=True).update(organization=org)
    Publication.objects.filter(organization__isnull=True).update(organization=org)
    PublicationCategory.objects.filter(organization__isnull=True).update(organization=org)
    Submission.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'),
        ('publications', '0002_externalpublication_image'),
    ]

    operations = [
        migrations.AddField(
            model_name='author',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='authors', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='externalpublication',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='external_publications', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='publication',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='publications', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='publicationcategory',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='publication_categories', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='submission',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submissions', to='companies.organization'),
        ),
        migrations.RunPython(backfill_organization, noop_reverse),
        migrations.AlterField(
            model_name='publicationcategory',
            name='name',
            field=models.CharField(max_length=100),
        ),
        migrations.AlterField(
            model_name='publicationcategory',
            name='slug',
            field=models.SlugField(blank=True, max_length=100, null=True),
        ),
        migrations.AlterField(
            model_name='author',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='authors', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='externalpublication',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='external_publications', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='publication',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='publications', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='publicationcategory',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='publication_categories', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='submission',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='submissions', to='companies.organization'),
        ),
        migrations.AddConstraint(
            model_name='publicationcategory',
            constraint=models.UniqueConstraint(fields=('organization', 'slug'), name='unique_publication_category_slug_per_org'),
        ),
        migrations.AddConstraint(
            model_name='publicationcategory',
            constraint=models.UniqueConstraint(fields=('organization', 'name'), name='unique_publication_category_name_per_org'),
        ),
    ]
