43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
|
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
|
||
|
|