import importlib

from django.apps import apps
from django.conf import settings

# override with custom classes if they exist
if settings.AUTH_USER_MODEL != "auth.User":  # pragma: no cover
    # UserAdmin class
    user_app_name = settings.AUTH_USER_MODEL.split(".")[0]
    app = apps.get_app_config(user_app_name).models_module

    try:
        custom_admin = importlib.import_module(app.__name__[:-6] + "admin")

        if hasattr(custom_admin, "UserAdmin"):
            UserAdmin = custom_admin.UserAdmin
        else:
            from django.contrib.auth.admin import UserAdmin
    except ImportError:
        from django.contrib.auth.admin import UserAdmin  # nopyflakes

    # user form classes
    try:
        custom_forms = importlib.import_module(app.__name__[:-6] + "forms")

        if hasattr(custom_forms, "UserCreationForm"):
            UserCreationForm = custom_forms.UserCreationForm
        else:
            from django.contrib.auth.forms import UserCreationForm

        if hasattr(custom_forms, "UserChangeForm"):
            UserChangeForm = custom_forms.UserChangeForm
        else:
            from django.contrib.auth.forms import UserChangeForm
    except ImportError:
        from django.contrib.auth.forms import (
            UserChangeForm,  # nopyflakes
            UserCreationForm,  # nopyflakes
        )
else:
    from django.contrib.auth.admin import UserAdmin  # noqa: F401
    from django.contrib.auth.forms import UserChangeForm, UserCreationForm  # noqa: F401
