from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.db import migrations, models
from django.db.backends.postgresql.schema import BaseDatabaseSchemaEditor
from django.db.migrations.state import StateApps


def set_subdomain_of_default_realm(
    apps: StateApps, schema_editor: BaseDatabaseSchemaEditor
) -> None:
    if settings.DEVELOPMENT:
        Realm = apps.get_model("zerver", "Realm")
        try:
            default_realm = Realm.objects.get(domain="zulip.com")
        except ObjectDoesNotExist:
            default_realm = None

        if default_realm is not None:
            default_realm.subdomain = "zulip"
            default_realm.save()


class Migration(migrations.Migration):

    dependencies = [
        ("zerver", "0001_initial"),
    ]

    operations = [
        migrations.AddField(
            model_name="realm",
            name="subdomain",
            field=models.CharField(max_length=40, unique=True, null=True),
        ),
        migrations.RunPython(set_subdomain_of_default_realm, elidable=True),
    ]
