import logging
import os
import sys

from django.apps import AppConfig
from django.conf import settings
from django.utils.autoreload import autoreload_started

logger = logging.getLogger(__name__)


def _watch_locale_po_files(sender, **kwargs):
    for locale_path in settings.LOCALE_PATHS:
        sender.watch_dir(locale_path, "**/*.po")


def _compile_locale_messages():
    try:
        from django.core.management import call_command

        call_command("compile_po", verbosity=0)
    except Exception as exc:
        logger.debug("Locale compile skipped: %s", exc)


class MainappConfig(AppConfig):
    name = "mainapp"
    default_auto_field = "django.db.models.BigAutoField"

    def ready(self):
        from django.contrib import admin

        admin.site.site_header = "Paython administration"
        admin.site.site_title = "Paython admin"

        if not settings.DEBUG:
            return

        autoreload_started.connect(_watch_locale_po_files, dispatch_uid="mainapp_watch_po")

        # runserver loads the app twice; compile only in the reloader child process.
        if "runserver" in sys.argv and os.environ.get("RUN_MAIN") != "true":
            return

        _compile_locale_messages()
