"""
Crea el único plan del primer corte: sin límites y predeterminado.

Va como migración de datos y no como registro creado al vuelo porque toda cuenta
nueva lo necesita: si el plan no existiera, el alta de la primera cuenta fallaría
o quedaría sin plan, que es el estado que el modelo intenta evitar.
"""

import uuid

from django.db import migrations

CODE = 'unlimited'


def crear_plan(apps, schema_editor):
    Plan = apps.get_model('billing', 'Plan')
    Plan.objects.update_or_create(
        code=CODE,
        defaults={
            'id': uuid.uuid4(),
            'name': 'Sin límites',
            # Nulo significa «sin tope», no «cero»: la columna queda cableada sin
            # restringir nada mientras la facturación esté apagada.
            'max_domains': None,
            'max_monitored_urls': None,
            'is_default': True,
        },
    )


def borrar_plan(apps, schema_editor):
    Plan = apps.get_model('billing', 'Plan')
    Plan.objects.filter(code=CODE).delete()


class Migration(migrations.Migration):
    dependencies = [('billing', '0001_initial')]

    operations = [migrations.RunPython(crear_plan, borrar_plan)]
