import os from django.conf.urls import url, include from .api import DjangoProjectHooksConfig def get_installed_apps(file_path, installed_apps): settings_dir = os.path.dirname(os.path.abspath(file_path)) config = DjangoProjectHooksConfig(settings_dir=settings_dir) app_list = installed_apps[:] for wanting_app in config: wanted_apps = config[wanting_app].get('INSTALLED_APPS', []) for wanted_app in wanted_apps: if wanted_app not in app_list: app_list.append(wanted_app) return app_list def get_urlpatterns(file_path, urlpatterns): settings_dir = os.path.dirname(os.path.abspath(file_path)) config = DjangoProjectHooksConfig(settings_dir=settings_dir) urls_list = urlpatterns[:] for app in config: if 'MOUNT' in config[app]: route, urlconf_module = config[app]['MOUNT'] pattern = '^{}/'.format(route) if urlconf_module.startswith('.'): urlconf_module = '{}{}'.format(app, urlconf_module) url_obj = url(pattern, include(urlconf_module)) urls_list.append(url_obj) return urls_list