# Generated by Django 6.0.4 on 2026-07-30 03:22, 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')
    Asset = apps.get_model('asset_management', 'Asset')
    AssetCategory = apps.get_model('asset_management', 'AssetCategory')
    AssetLocation = apps.get_model('asset_management', 'AssetLocation')
    AssetTicket = apps.get_model('asset_management', 'AssetTicket')
    License = apps.get_model('asset_management', 'License')
    Procurement = apps.get_model('asset_management', 'Procurement')
    Rental = apps.get_model('asset_management', 'Rental')
    StockItem = apps.get_model('asset_management', 'StockItem')
    Vendor = apps.get_model('asset_management', 'Vendor')

    org = Organization.objects.first()
    if org is None:
        return
    Asset.objects.filter(organization__isnull=True).update(organization=org)
    AssetCategory.objects.filter(organization__isnull=True).update(organization=org)
    AssetLocation.objects.filter(organization__isnull=True).update(organization=org)
    AssetTicket.objects.filter(organization__isnull=True).update(organization=org)
    License.objects.filter(organization__isnull=True).update(organization=org)
    Procurement.objects.filter(organization__isnull=True).update(organization=org)
    Rental.objects.filter(organization__isnull=True).update(organization=org)
    StockItem.objects.filter(organization__isnull=True).update(organization=org)
    Vendor.objects.filter(organization__isnull=True).update(organization=org)


def noop_reverse(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('asset_management', '0009_licenseseatassignment'),
        ('companies', '0012_add_organization_scope'),
        ('procurements', '0017_payment_fund_approval'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name='asset',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='assets_scoped', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='assetcategory',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='asset_categories', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='assetlocation',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='asset_locations', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='assetticket',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='asset_tickets', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='license',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='licenses_scoped', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='procurement',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='procurements_scoped', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='rental',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='rentals_scoped', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='stockitem',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='stock_items_scoped', to='companies.organization'),
        ),
        migrations.AddField(
            model_name='vendor',
            name='organization',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='vendors', to='companies.organization'),
        ),
        migrations.RunPython(backfill_organization, noop_reverse),
        migrations.AlterField(
            model_name='asset',
            name='asset_tag',
            field=models.CharField(max_length=100),
        ),
        migrations.AlterField(
            model_name='assetcategory',
            name='name',
            field=models.CharField(max_length=100),
        ),
        migrations.AlterField(
            model_name='assetcategory',
            name='slug',
            field=models.SlugField(blank=True, max_length=100, null=True),
        ),
        migrations.AlterField(
            model_name='assetlocation',
            name='slug',
            field=models.SlugField(blank=True, max_length=255, null=True),
        ),
        migrations.AlterField(
            model_name='procurement',
            name='number',
            field=models.CharField(blank=True, max_length=40),
        ),
        migrations.AlterField(
            model_name='stockitem',
            name='sku',
            field=models.CharField(blank=True, max_length=100),
        ),
        migrations.AlterField(
            model_name='asset',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assets_scoped', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='assetcategory',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='asset_categories', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='assetlocation',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='asset_locations', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='assetticket',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='asset_tickets', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='license',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='licenses_scoped', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='procurement',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='procurements_scoped', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='rental',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rentals_scoped', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='stockitem',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='stock_items_scoped', to='companies.organization'),
        ),
        migrations.AlterField(
            model_name='vendor',
            name='organization',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vendors', to='companies.organization'),
        ),
        migrations.AddConstraint(
            model_name='asset',
            constraint=models.UniqueConstraint(fields=('organization', 'asset_tag'), name='unique_asset_tag_per_org'),
        ),
        migrations.AddConstraint(
            model_name='assetcategory',
            constraint=models.UniqueConstraint(fields=('organization', 'name'), name='unique_asset_category_name_per_org'),
        ),
        migrations.AddConstraint(
            model_name='assetcategory',
            constraint=models.UniqueConstraint(fields=('organization', 'slug'), name='unique_asset_category_slug_per_org'),
        ),
        migrations.AddConstraint(
            model_name='assetlocation',
            constraint=models.UniqueConstraint(fields=('organization', 'slug'), name='unique_asset_location_slug_per_org'),
        ),
        migrations.AddConstraint(
            model_name='procurement',
            constraint=models.UniqueConstraint(fields=('organization', 'number'), name='unique_procurement_number_per_org'),
        ),
        migrations.AddConstraint(
            model_name='stockitem',
            constraint=models.UniqueConstraint(fields=('organization', 'sku'), name='unique_stock_item_sku_per_org'),
        ),
    ]
