startup.py 1.56 KB
Newer Older
1 2 3
"""
Module for code that should run during LMS startup
"""
Calen Pennington committed
4

5 6 7 8 9 10
from django.conf import settings

# Force settings to run so that the python path is modified
settings.INSTALLED_APPS  # pylint: disable=W0104

from django_startup import autostartup
11
import edxmako
12

13

14 15 16 17 18
def run():
    """
    Executed during django startup
    """
    autostartup()
19

20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
    if settings.FEATURES.get('USE_CUSTOM_THEME', False):
        enable_theme()


def enable_theme():
    """
    Enable the settings for a custom theme, whose files should be stored
    in ENV_ROOT/themes/THEME_NAME (e.g., edx_all/themes/stanford).
    """
    # Workaround for setting THEME_NAME to an empty
    # string which is the default due to this ansible
    # bug: https://github.com/ansible/ansible/issues/4812
    if settings.THEME_NAME == "":
        settings.THEME_NAME = None
        return

    assert settings.FEATURES['USE_CUSTOM_THEME']
    settings.FAVICON_PATH = 'themes/{name}/images/favicon.ico'.format(
        name=settings.THEME_NAME
    )

    # Calculate the location of the theme's files
    theme_root = settings.ENV_ROOT / "themes" / settings.THEME_NAME

    # Include the theme's templates in the template search paths
45 46
    settings.TEMPLATE_DIRS.insert(0, theme_root / 'templates')
    settings.MAKO_TEMPLATES['main'].insert(0, theme_root / 'templates')
47
    edxmako.startup.run()
48 49 50 51 52 53

    # Namespace the theme's static files to 'themes/<theme_name>' to
    # avoid collisions with default edX static files
    settings.STATICFILES_DIRS.append(
        (u'themes/{}'.format(settings.THEME_NAME), theme_root / 'static')
    )