mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-04-09 09:30:59 +00:00
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
try:
|
|
from importlib import import_module
|
|
except ImportError:
|
|
# for Python 2.6, fall back on django.utils.importlib (deprecated as of Django 1.7)
|
|
from django.utils.importlib import import_module
|
|
|
|
import django
|
|
from django.conf import settings
|
|
from django.utils.module_loading import module_has_submodule
|
|
|
|
|
|
def get_app_modules():
|
|
"""
|
|
Generator function that yields a module object for each installed app
|
|
yields tuples of (app_name, module)
|
|
"""
|
|
if django.VERSION < (1, 7):
|
|
# Django 1.6
|
|
for app in settings.INSTALLED_APPS:
|
|
yield app, import_module(app)
|
|
else:
|
|
# Django 1.7+
|
|
from django.apps import apps
|
|
for app in apps.get_app_configs():
|
|
yield app.name, app.module
|
|
|
|
|
|
def get_app_submodules(submodule_name):
|
|
"""
|
|
Searches each app module for the specified submodule
|
|
yields tuples of (app_name, module)
|
|
"""
|
|
for name, module in get_app_modules():
|
|
if module_has_submodule(module, submodule_name):
|
|
yield name, import_module('%s.%s' % (name, submodule_name))
|