# Generated by Django 6.0.4 on 2026-07-30 14:23, hand-adjusted:
# backfill Site.organization to the bootstrapped CSIS org, then tighten to
# non-null. AccessLog.organization stays permanently nullable — resolved at
# write time by AccessLogMiddleware, and legitimately unresolvable for some
# requests (e.g. resource_type="other" or a lookup miss).

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


def backfill_organization(apps, schema_editor):
    Organization = apps.get_model('companies', 'Organization')
    Site = apps.get_model('analytics', 'Site')

    org = Organization.objects.first()
    if org is None:
        return
    Site.objects.filter(organization__isnull=True).update(organization=org)


def noop_reverse(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('analytics', '0002_initial'),
        ('companies', '0012_add_organization_scope'),
    ]

    operations = [
        migrations.AddField(
            model_name='accesslog',
            name='organization',
            field=models.ForeignKey(blank=True, help_text='Resolved from resource_type/resource_id at write time; null when unresolvable.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='analytics_access_logs', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='site',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='analytics_sites', to='companies.organization'),
        ),
        migrations.AddIndex(
            model_name='accesslog',
            index=models.Index(fields=['organization', 'created_at'], name='analytics_a_organiz_833461_idx'),
        ),
        migrations.RunPython(backfill_organization, noop_reverse),
        migrations.AlterField(
            model_name='site',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='analytics_sites', to='companies.organization'),
        ),
    ]
