Files
edx-platform/openedx/core/djangoapps/theming/checks.py
Usama Sadiq 24272e5caa refactor: ran pyupgrade on openedx/core/djangoapps (#26956)
Ran pyupgrade on openedx/core/djangoapps/{system_wide_roles, theming}
2021-04-01 19:27:38 +05:00

83 lines
2.8 KiB
Python

"""
Settings validations for the theming app
"""
import os
from django.conf import settings
from django.core.checks import Error, Tags, register
from edx_toggles.toggles import SettingToggle
@register(Tags.compatibility)
def check_comprehensive_theme_settings(app_configs, **kwargs): # lint-amnesty, pylint: disable=unused-argument
"""
Checks the comprehensive theming theme directory settings.
Raises compatibility Errors upon:
- COMPREHENSIVE_THEME_DIRS is not a list
- theme dir path is not a string
- theme dir path is not an absolute path
- path specified in COMPREHENSIVE_THEME_DIRS does not exist
Returns:
List of any Errors.
"""
if not SettingToggle("ENABLE_COMPREHENSIVE_THEMING", default=False).is_enabled():
# Only perform checks when comprehensive theming is enabled.
return []
errors = []
# COMPREHENSIVE_THEME_DIR is no longer supported - support has been removed.
if hasattr(settings, "COMPREHENSIVE_THEME_DIR"):
theme_dir = settings.COMPREHENSIVE_THEME_DIR
errors.append(
Error(
"COMPREHENSIVE_THEME_DIR setting has been removed in favor of COMPREHENSIVE_THEME_DIRS.",
hint='Transfer the COMPREHENSIVE_THEME_DIR value to COMPREHENSIVE_THEME_DIRS.',
obj=theme_dir,
id='openedx.core.djangoapps.theming.E001',
)
)
if hasattr(settings, "COMPREHENSIVE_THEME_DIRS"):
theme_dirs = settings.COMPREHENSIVE_THEME_DIRS
if not isinstance(theme_dirs, list):
errors.append(
Error(
"COMPREHENSIVE_THEME_DIRS must be a list.",
obj=theme_dirs,
id='openedx.core.djangoapps.theming.E004',
)
)
if not all(isinstance(theme_dir, str) for theme_dir in theme_dirs):
errors.append(
Error(
"COMPREHENSIVE_THEME_DIRS must contain only strings.",
obj=theme_dirs,
id='openedx.core.djangoapps.theming.E005',
)
)
if not all(theme_dir.startswith("/") for theme_dir in theme_dirs):
errors.append(
Error(
"COMPREHENSIVE_THEME_DIRS must contain only absolute paths to themes dirs.",
obj=theme_dirs,
id='openedx.core.djangoapps.theming.E006',
)
)
if not all(os.path.isdir(theme_dir) for theme_dir in theme_dirs):
errors.append(
Error(
"COMPREHENSIVE_THEME_DIRS must contain valid paths.",
obj=theme_dirs,
id='openedx.core.djangoapps.theming.E007',
)
)
return errors