From 8a7f9f3e30bf7a056d46db86e0154387e99007a8 Mon Sep 17 00:00:00 2001 From: Lefteris Nikoltsios Date: Thu, 23 Mar 2017 15:05:40 +0000 Subject: [PATCH 1/2] Make use of autodiscover_modules instead of python import_module. --- badgify/registry.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/badgify/registry.py b/badgify/registry.py index c712c4d..c0b3857 100644 --- a/badgify/registry.py +++ b/badgify/registry.py @@ -6,6 +6,12 @@ logger = logging.getLogger('badgify') +try: + from django.utils.module_loading import autodiscover_modules +except ImportError: + autodiscover_modules = None + + class BadgifyRegistry(object): """ Badge recipes registry. @@ -121,13 +127,7 @@ def get_recipe_instance_from_class(klass): def _autodiscover(recipes): import copy from django.conf import settings - - try: - # py27 / py3 only - from importlib import import_module - except ImportError: - from django.utils.importlib import import_module - + from django.utils.importlib import import_module from django.utils.module_loading import module_has_submodule for app in settings.INSTALLED_APPS: @@ -145,7 +145,17 @@ def _autodiscover(recipes): def autodiscover(): - _autodiscover(registry) + """ + Check all apps in INSTALLED_APPS for stuff related to badgify_recipes. + + For each app, autodiscover imports ``app.badgify_recipes`` if + possing, resulting in execution of :py:func:`register()` statements in that + module, filling up :py:data:`registry`. + """ + if autodiscover_modules: + autodiscover_modules('badgify_recipes') + else: + _autodiscover(registry) def register(*args, **kwargs): From ec2b4277364c61fbd2145942a948b35c569d8f81 Mon Sep 17 00:00:00 2001 From: Lefteris Nikoltsios Date: Thu, 30 Mar 2017 10:27:07 +0100 Subject: [PATCH 2/2] Remove app namespace from the get_model_string. --- badgify/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/badgify/utils.py b/badgify/utils.py index 15ef304..ab3cb49 100644 --- a/badgify/utils.py +++ b/badgify/utils.py @@ -90,7 +90,7 @@ def get_model_string(model_name): Borrowed from: https://github.com/thoas/django-discussions/blob/master/discussions/utils.py """ - setting_name = 'BADGIFY_%s_MODEL' % model_name.upper().replace('_', '') + setting_name = '%s_MODEL' % model_name.upper().replace('_', '') class_path = getattr(settings, setting_name, None) if not class_path: return 'badgify.%s' % model_name