99 lines
4.5 KiB
Python
99 lines
4.5 KiB
Python
"""
|
|
Unified course experience settings and helper methods.
|
|
"""
|
|
|
|
from django.urls import reverse
|
|
from django.utils.translation import gettext as _
|
|
from edx_toggles.toggles import WaffleFlag
|
|
from openedx.core.djangoapps.waffle_utils import CourseWaffleFlag
|
|
|
|
|
|
# Namespace for course experience waffle flags.
|
|
WAFFLE_FLAG_NAMESPACE = 'course_experience'
|
|
|
|
# Waffle flag to disable the separate course outline page and full width content.
|
|
DISABLE_COURSE_OUTLINE_PAGE_FLAG = CourseWaffleFlag( # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
f'{WAFFLE_FLAG_NAMESPACE}.disable_course_outline_page', __name__
|
|
)
|
|
|
|
# Waffle flag to enable the sock on the footer of the home and courseware pages.
|
|
DISPLAY_COURSE_SOCK_FLAG = CourseWaffleFlag(f'{WAFFLE_FLAG_NAMESPACE}.display_course_sock', __name__) # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
|
|
# Waffle flag to let learners access a course before its start date.
|
|
COURSE_PRE_START_ACCESS_FLAG = WaffleFlag(f'{WAFFLE_FLAG_NAMESPACE}.pre_start_access', __name__) # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
|
|
# .. toggle_name: course_experience.enable_course_goals
|
|
# .. toggle_implementation: CourseWaffleFlag
|
|
# .. toggle_default: False
|
|
# .. toggle_description: Used to determine whether or not to use course goals for the particular course.
|
|
# .. toggle_use_cases: opt_out, temporary
|
|
# .. toggle_creation_date: 2017-09-11
|
|
# .. toggle_target_removal_date: None
|
|
# .. toggle_warning: This temporary feature toggle does not have a target removal date.
|
|
ENABLE_COURSE_GOALS = CourseWaffleFlag(f'{WAFFLE_FLAG_NAMESPACE}.enable_course_goals', __name__) # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
|
|
# Waffle flag to enable anonymous access to a course
|
|
SEO_WAFFLE_FLAG_NAMESPACE = 'seo'
|
|
COURSE_ENABLE_UNENROLLED_ACCESS_FLAG = CourseWaffleFlag( # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
f'{SEO_WAFFLE_FLAG_NAMESPACE}.enable_anonymous_courseware_access', __name__
|
|
)
|
|
|
|
# .. toggle_name: course_experience.relative_dates
|
|
# .. toggle_implementation: CourseWaffleFlag
|
|
# .. toggle_default: False
|
|
# .. toggle_description: Waffle flag to enable relative dates for course content. A 'Dates' tab will be visible in the
|
|
# course view showing key course dates. Was previously an ExperimentWaffleFlag with experiment_id=17.
|
|
# .. toggle_use_cases: opt_in
|
|
# .. toggle_creation_date: 2020-02-10
|
|
# .. toggle_warning: To set a relative due date for self-paced courses, the weeks_to_complete field for a course run
|
|
# needs to be set. Currently it can be set through the publisher app.
|
|
# .. toggle_tickets: https://openedx.atlassian.net/browse/AA-27
|
|
RELATIVE_DATES_FLAG = CourseWaffleFlag(f'{WAFFLE_FLAG_NAMESPACE}.relative_dates', __name__) # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
|
|
# .. toggle_name: course_experience.calendar_sync
|
|
# .. toggle_implementation: CourseWaffleFlag
|
|
# .. toggle_default: False
|
|
# .. toggle_description: This course flag enables a course tool (which is a tool that is added on a course home page)
|
|
# that sends course assignment calendars to course students, whenever they click on the "Subscribe to calendar
|
|
# updates" button. The email contains an ics attachment that students can then use to sync with their own calendar
|
|
# apps.
|
|
# .. toggle_warning: For this toggle to have an effect, the RELATIVE_DATES_FLAG toggle must be enabled, too.
|
|
# .. toggle_use_cases: temporary
|
|
# .. toggle_creation_date: 2021-01-26
|
|
# .. toggle_target_removal_date: 2021-04-26
|
|
# .. toggle_tickets: https://openedx.atlassian.net/browse/AA-36
|
|
CALENDAR_SYNC_FLAG = CourseWaffleFlag(f'{WAFFLE_FLAG_NAMESPACE}.calendar_sync', __name__) # lint-amnesty, pylint: disable=toggle-missing-annotation
|
|
|
|
|
|
def course_home_page_title(_course):
|
|
"""
|
|
Returns the title for the course home page.
|
|
"""
|
|
return _('Course')
|
|
|
|
|
|
def default_course_url(course_key):
|
|
"""
|
|
Returns the default course URL for the current user.
|
|
|
|
Arguments:
|
|
course_key (CourseKey): The course id of the current course.
|
|
"""
|
|
from .url_helpers import get_learning_mfe_home_url
|
|
|
|
if DISABLE_COURSE_OUTLINE_PAGE_FLAG.is_enabled(course_key):
|
|
return reverse('courseware', args=[str(course_key)])
|
|
|
|
return get_learning_mfe_home_url(course_key, url_fragment='home')
|
|
|
|
|
|
def course_home_url(course_key):
|
|
"""
|
|
Returns the course home page's URL for the current user.
|
|
|
|
Arguments:
|
|
course_key (CourseKey): The course key for which the home url is being requested.
|
|
"""
|
|
from .url_helpers import get_learning_mfe_home_url
|
|
return get_learning_mfe_home_url(course_key, url_fragment='home')
|