From af36a9d2c98f868532bc460972131e9dcb4174ff Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Fri, 29 May 2020 21:28:12 +0200
Subject: [PATCH] Use autodiscover code of Django for checks and model
 extensions

---
 aleksis/core/apps.py      |  4 ++++
 aleksis/core/util/apps.py | 16 ----------------
 2 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/aleksis/core/apps.py b/aleksis/core/apps.py
index 0037842bc..8d142eb01 100644
--- a/aleksis/core/apps.py
+++ b/aleksis/core/apps.py
@@ -2,6 +2,7 @@ from typing import Any, List, Optional, Tuple
 
 import django.apps
 from django.http import HttpRequest
+from django.utils.module_loading import autodiscover_modules
 
 from dynamic_preferences.registries import preference_models
 
@@ -36,6 +37,9 @@ class CoreConfig(AppConfig):
     def ready(self):
         super().ready()
 
+        # Autodiscover various modules defined by AlekSIS
+        autodiscover_modules("model_extensions", "checks")
+
         sitepreferencemodel = self.get_model("SitePreferenceModel")
         personpreferencemodel = self.get_model("PersonPreferenceModel")
         grouppreferencemodel = self.get_model("GroupPreferenceModel")
diff --git a/aleksis/core/util/apps.py b/aleksis/core/util/apps.py
index 150053733..0cc86534f 100644
--- a/aleksis/core/util/apps.py
+++ b/aleksis/core/util/apps.py
@@ -19,15 +19,6 @@ class AppConfig(django.apps.AppConfig):
     def ready(self):
         super().ready()
 
-        # Run model extension code
-        try:
-            import_module(
-                ".".join(self.__class__.__module__.split(".")[:-1] + ["model_extensions"])
-            )
-        except ImportError:
-            # ImportErrors are non-fatal because model extensions are optional.
-            pass
-
         # Register default listeners
         pre_migrate.connect(self.pre_migrate, sender=self)
         post_migrate.connect(self.post_migrate, sender=self)
@@ -38,13 +29,6 @@ class AppConfig(django.apps.AppConfig):
         # Getting an app ready means it should look at its config once
         self.preference_updated(self)
 
-        # Register system checks of this app
-        try:
-            import_module(".".join(self.__class__.__module__.split(".")[:-1] + ["checks"]))
-        except ImportError:
-            # ImportErrors are non-fatal because checks are optional.
-            pass
-
     @classmethod
     def get_name(cls):
         """Get name of application package."""
-- 
GitLab