Skip to content
Snippets Groups Projects

Improve logging

Merged Nik | Klampfradler requested to merge 875-django-setup-very-slow into master
Files
3
+ 18
0
import logging
from importlib import metadata
from typing import TYPE_CHECKING, Any, Optional, Sequence
@@ -26,8 +27,11 @@ class AppConfig(django.apps.AppConfig):
def __init_subclass__(cls):
super().__init_subclass__()
cls.default = True
cls._logger = logging.getLogger(f"{cls.__module__}.{cls.__name__}")
def ready(self):
self._logger.debug("Running app.ready")
super().ready()
# Register default listeners
@@ -36,9 +40,12 @@ class AppConfig(django.apps.AppConfig):
preference_updated.connect(self.preference_updated)
user_logged_in.connect(self.user_logged_in)
user_logged_out.connect(self.user_logged_out)
self._logger.debug("Default signal handlers connected")
# Getting an app ready means it should look at its config once
self._logger.debug("Force-loading preferences")
self.preference_updated(self)
self._logger.debug("Preferences loaded")
def get_distribution_name(self):
"""Get distribution name of application package."""
@@ -282,6 +289,8 @@ class AppConfig(django.apps.AppConfig):
return {}
def _maintain_default_data(self):
self._logger.debug("Maintaining default data for %s", self.get_name())
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
@@ -292,10 +301,19 @@ class AppConfig(django.apps.AppConfig):
for model in self.get_models():
if hasattr(model, "maintain_default_data"):
# Method implemented by each model object; can be left out
self._logger.info(
"Maintaining default data of %s in %s", model._meta.model_name, self.get_name()
)
model.maintain_default_data()
if hasattr(model, "extra_permissions"):
self._logger.info(
"Maintaining extra permissions for %s in %s",
model._meta.model_name,
self.get_name(),
)
ct = ContentType.objects.get_for_model(model)
for perm, verbose_name in model.extra_permissions:
self._logger.debug("Creating %s (%s)", perm, verbose_name)
Permission.objects.get_or_create(
codename=perm,
content_type=ct,
Loading