from django.db import migrations, models


def dedupe_zones_by_country_code(apps, schema_editor):
    Zone = apps.get_model('core', 'Zone')
    seen = set()
    for zone in Zone.objects.order_by('id'):
        code = (zone.country_code or '').strip().upper()
        if not code or code in seen:
            zone.delete()
            continue
        seen.add(code)
        if zone.country_code != code:
            zone.country_code = code
            zone.save(update_fields=['country_code'])


class Migration(migrations.Migration):

    dependencies = [
        ('core', '0015_zone_country_code'),
    ]

    operations = [
        migrations.RunPython(dedupe_zones_by_country_code, migrations.RunPython.noop),
        migrations.RemoveField(
            model_name='zone',
            name='name',
        ),
        migrations.AlterField(
            model_name='zone',
            name='country_code',
            field=models.CharField(max_length=2, unique=True),
        ),
        migrations.AlterModelOptions(
            name='zone',
            options={'ordering': ['country_code'], 'verbose_name_plural': 'zones & operational regions'},
        ),
    ]
