Files
edx-platform/openedx/core/djangoapps/xblock/apps.py

110 lines
3.5 KiB
Python

"""
Django app configuration for the XBlock Runtime django app
"""
from django.apps import AppConfig, apps
from django.conf import settings
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
class XBlockAppConfig(AppConfig):
"""
Django app configuration for the new XBlock Runtime django app
"""
name = 'openedx.core.djangoapps.xblock'
verbose_name = 'New XBlock Runtime'
label = 'xblock_new' # The name 'xblock' is already taken by ORA2's 'openassessment.xblock' app :/
def get_runtime_system_params(self):
"""
Get the XBlockRuntimeSystem parameters appropriate for viewing and/or
editing XBlock content.
"""
raise NotImplementedError
def get_site_root_url(self):
"""
Get the absolute root URL to this site, e.g. 'https://courses.example.com'
Should not have any trailing slash.
"""
raise NotImplementedError
def get_learning_context_params(self):
"""
Get additional kwargs that are passed to learning context implementations
(LearningContext subclass constructors). For example, this can be used to
specify that the course learning context should load the course's list of
blocks from the _draft_ version of the course in studio, but from the
published version of the course in the LMS.
"""
return {}
class LmsXBlockAppConfig(XBlockAppConfig):
"""
LMS-specific configuration of the XBlock Runtime django app.
"""
def get_runtime_system_params(self):
"""
Get the XBlockRuntimeSystem parameters appropriate for viewing and/or
editing XBlock content in the LMS
"""
return dict(
student_data_mode='persisted',
)
def get_site_root_url(self):
"""
Get the absolute root URL to this site, e.g. 'https://courses.example.com'
Should not have any trailing slash.
"""
return configuration_helpers.get_value('LMS_ROOT_URL', settings.LMS_ROOT_URL)
class StudioXBlockAppConfig(XBlockAppConfig):
"""
Studio-specific configuration of the XBlock Runtime django app.
"""
BLOCKSTORE_DRAFT_NAME = "studio_draft"
def get_runtime_system_params(self):
"""
Get the XBlockRuntimeSystem parameters appropriate for viewing and/or
editing XBlock content in Studio
"""
return dict(
student_data_mode='ephemeral',
)
def get_site_root_url(self):
"""
Get the absolute root URL to this site, e.g. 'https://studio.example.com'
Should not have any trailing slash.
"""
scheme = "https" if settings.HTTPS == "on" else "http"
return scheme + '://' + settings.CMS_BASE
# or for the LMS version: configuration_helpers.get_value('LMS_ROOT_URL', settings.LMS_ROOT_URL)
def get_learning_context_params(self):
"""
Get additional kwargs that are passed to learning context implementations
(LearningContext subclass constructors). For example, this can be used to
specify that the course learning context should load the course's list of
blocks from the _draft_ version of the course in studio, but from the
published version of the course in the LMS.
"""
return {
"use_draft": self.BLOCKSTORE_DRAFT_NAME,
}
def get_xblock_app_config():
"""
Get whichever of the above AppConfig subclasses is active.
"""
return apps.get_app_config(XBlockAppConfig.label)