Django_Basic_Manufacturing_3/venv/Lib/site-packages/axes/apps.py
2025-08-22 17:05:22 +07:00

61 lines
1.7 KiB
Python

# pylint: disable=import-outside-toplevel, unused-import
from logging import getLogger
from django import apps
from axes import __version__
log = getLogger(__name__)
class AppConfig(apps.AppConfig):
default_auto_field = "django.db.models.AutoField"
name = "axes"
initialized = False
@classmethod
def initialize(cls):
"""
Initialize Axes logging and show version information.
This method is re-entrant and can be called multiple times.
It displays version information exactly once at application startup.
"""
if cls.initialized:
return
cls.initialized = True
# Only import settings, checks, and signals one time after Django has been initialized
from axes.conf import settings
from axes import checks, signals
# Skip startup log messages if Axes is not set to verbose
if settings.AXES_VERBOSE:
if callable(settings.AXES_LOCKOUT_PARAMETERS) or isinstance(
settings.AXES_LOCKOUT_PARAMETERS, str
):
mode = "blocking by parameters that are calculated in a custom callable"
else:
mode = "blocking by " + " or ".join(
[
(
param
if isinstance(param, str)
else "combination of " + " and ".join(param)
)
for param in settings.AXES_LOCKOUT_PARAMETERS
]
)
log.info(
"AXES: BEGIN version %s, %s",
__version__,
mode,
)
def ready(self):
self.initialize()