# Generated by Django 5.2.7 on 2025-11-21 07:42

from django.db import migrations


def fix_capitalization(apps, schema_editor):
    """
    Исправляет регистр типов объектов: "стационарные" -> "Стационарные", "подвижные" -> "Подвижные"
    """
    ObjectInfo = apps.get_model('mainapp', 'ObjectInfo')
    Source = apps.get_model('mainapp', 'Source')
    
    # Создаем правильные типы с большой буквы
    stationary_new, _ = ObjectInfo.objects.get_or_create(name="Стационарные")
    mobile_new, _ = ObjectInfo.objects.get_or_create(name="Подвижные")
    
    # Находим старые типы с маленькой буквы
    try:
        stationary_old = ObjectInfo.objects.get(name="стационарные")
        # Обновляем все Source, которые используют старый тип
        count = Source.objects.filter(info=stationary_old).update(info=stationary_new)
        print(f"Обновлено {count} источников: 'стационарные' -> 'Стационарные'")
        # Удаляем старый тип
        stationary_old.delete()
    except ObjectInfo.DoesNotExist:
        pass
    
    try:
        mobile_old = ObjectInfo.objects.get(name="подвижные")
        # Обновляем все Source, которые используют старый тип
        count = Source.objects.filter(info=mobile_old).update(info=mobile_new)
        print(f"Обновлено {count} источников: 'подвижные' -> 'Подвижные'")
        # Удаляем старый тип
        mobile_old.delete()
    except ObjectInfo.DoesNotExist:
        pass


def reverse_fix_capitalization(apps, schema_editor):
    """
    Обратная миграция - возвращаем маленькие буквы
    """
    ObjectInfo = apps.get_model('mainapp', 'ObjectInfo')
    Source = apps.get_model('mainapp', 'Source')
    
    # Создаем типы с маленькой буквы
    stationary_old, _ = ObjectInfo.objects.get_or_create(name="стационарные")
    mobile_old, _ = ObjectInfo.objects.get_or_create(name="подвижные")
    
    # Находим типы с большой буквы
    try:
        stationary_new = ObjectInfo.objects.get(name="Стационарные")
        Source.objects.filter(info=stationary_new).update(info=stationary_old)
        stationary_new.delete()
    except ObjectInfo.DoesNotExist:
        pass
    
    try:
        mobile_new = ObjectInfo.objects.get(name="Подвижные")
        Source.objects.filter(info=mobile_new).update(info=mobile_old)
        mobile_new.delete()
    except ObjectInfo.DoesNotExist:
        pass


class Migration(migrations.Migration):

    dependencies = [
        ('mainapp', '0010_set_default_source_type'),
    ]

    operations = [
        migrations.RunPython(fix_capitalization, reverse_fix_capitalization),
    ]
