23 lines
677 B
Python
23 lines
677 B
Python
from importlib import import_module
|
|
|
|
from django.apps import apps
|
|
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)
|
|
"""
|
|
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(f"{name}.{submodule_name}")
|