from django.utils.importlib import import_module from django.utils.module_loading import module_has_submodule def autodiscover(module): """ Auto-discover INSTALLED_APPS module.py """ from django.conf import settings for app in settings.INSTALLED_APPS: mod = import_module(app) try: import_module('%s.%s' % (app, module)) except ImportError: # Decide whether to bubble up this error. If the app just # doesn't have the module, we can ignore the error # attempting to import it, otherwise we want it to bubble up. if module_has_submodule(mod, module): print '%s module caused this error:' % module raise def isinstalled(app): """ returns True if app is installed """ from django.conf import settings return app in settings.INSTALLED_APPS def add_app(INSTALLED_APPS, app, prepend=False, append=True): """ add app to installed_apps """ if app not in INSTALLED_APPS: if prepend: return (app,) + INSTALLED_APPS else: return INSTALLED_APPS + (app,) return INSTALLED_APPS def remove_app(INSTALLED_APPS, app): """ remove app from installed_apps """ if app in INSTALLED_APPS: apps = list(INSTALLED_APPS) apps.remove(app) return tuple(apps) return INSTALLED_APPS