From 7189bd64842c8d43ed8a2c5468f18a42208cffab Mon Sep 17 00:00:00 2001 From: ruzniaievdm Date: Tue, 19 Mar 2024 16:16:16 +0200 Subject: [PATCH] feat: [FC-0044] add waffle flag support (#34338) * feat: [FC-0044] add waffle flag support * fix: resolve discussions --- cms/djangoapps/contentstore/toggles.py | 60 ++++++++++++++++++++++++++ cms/djangoapps/contentstore/utils.py | 42 ++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/cms/djangoapps/contentstore/toggles.py b/cms/djangoapps/contentstore/toggles.py index ac8469678f..0d5b0b294f 100644 --- a/cms/djangoapps/contentstore/toggles.py +++ b/cms/djangoapps/contentstore/toggles.py @@ -497,6 +497,66 @@ def use_new_course_team_page(course_key): return ENABLE_NEW_STUDIO_COURSE_TEAM_PAGE.is_enabled(course_key) +# .. toggle_name: contentstore.new_studio_mfe.use_new_certificates_page +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: This flag enables the use of the new studio course certificates page mfe +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2024-1-18 +# .. toggle_target_removal_date: 2023-4-31 +# .. toggle_tickets: https://github.com/openedx/platform-roadmap/issues/317 +# .. toggle_warning: +ENABLE_NEW_STUDIO_CERTIFICATES_PAGE = CourseWaffleFlag( + f'{CONTENTSTORE_NAMESPACE}.new_studio_mfe.use_new_certificates_page', __name__) + + +def use_new_certificates_page(course_key): + """ + Returns a boolean if new studio certificates mfe is enabled + """ + return ENABLE_NEW_STUDIO_CERTIFICATES_PAGE.is_enabled(course_key) + + +# .. toggle_name: contentstore.new_studio_mfe.use_new_textbooks_page +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: This flag enables the use of the new studio course textbooks page mfe +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2024-1-18 +# .. toggle_target_removal_date: 2023-4-31 +# .. toggle_tickets: https://github.com/openedx/platform-roadmap/issues/319 +# .. toggle_warning: +ENABLE_NEW_STUDIO_TEXTBOOKS_PAGE = CourseWaffleFlag( + f'{CONTENTSTORE_NAMESPACE}.new_studio_mfe.use_new_textbooks_page', __name__) + + +def use_new_textbooks_page(course_key): + """ + Returns a boolean if new studio textbooks mfe is enabled + """ + return ENABLE_NEW_STUDIO_TEXTBOOKS_PAGE.is_enabled(course_key) + + +# .. toggle_name: contentstore.new_studio_mfe.use_new_group_configurations_page +# .. toggle_implementation: CourseWaffleFlag +# .. toggle_default: False +# .. toggle_description: This flag enables the use of the new studio course group configurations page mfe +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2024-1-18 +# .. toggle_target_removal_date: 2023-4-31 +# .. toggle_tickets: https://github.com/openedx/platform-roadmap/issues/318 +# .. toggle_warning: +ENABLE_NEW_STUDIO_GROUP_CONFIGURATIONS_PAGE = CourseWaffleFlag( + f'{CONTENTSTORE_NAMESPACE}.new_studio_mfe.use_new_group_configurations_page', __name__) + + +def use_new_group_configurations_page(course_key): + """ + Returns a boolean if new studio group configurations mfe is enabled + """ + return ENABLE_NEW_STUDIO_GROUP_CONFIGURATIONS_PAGE.is_enabled(course_key) + + # .. toggle_name: contentstore.mock_video_uploads # .. toggle_implementation: WaffleFlag # .. toggle_default: False diff --git a/cms/djangoapps/contentstore/utils.py b/cms/djangoapps/contentstore/utils.py index 46c8d04398..cc2c7b4f33 100644 --- a/cms/djangoapps/contentstore/utils.py +++ b/cms/djangoapps/contentstore/utils.py @@ -74,14 +74,17 @@ from cms.djangoapps.contentstore.toggles import ( split_library_view_on_dashboard, use_new_advanced_settings_page, use_new_course_outline_page, + use_new_certificates_page, use_new_export_page, use_new_files_uploads_page, use_new_grading_page, + use_new_group_configurations_page, use_new_course_team_page, use_new_home_page, use_new_import_page, use_new_schedule_details_page, use_new_text_editor, + use_new_textbooks_page, use_new_unit_page, use_new_updates_page, use_new_video_editor, @@ -433,6 +436,45 @@ def get_unit_url(course_locator, unit_locator) -> str: return unit_url +def get_certificates_url(course_locator) -> str: + """ + Gets course authoring microfrontend URL for certificates page view. + """ + certificates_url = None + if use_new_certificates_page(course_locator): + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/certificates' + if mfe_base_url: + certificates_url = course_mfe_url + return certificates_url + + +def get_textbooks_url(course_locator) -> str: + """ + Gets course authoring microfrontend URL for textbooks page view. + """ + textbooks_url = None + if use_new_textbooks_page(course_locator): + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/pages-and-resources/textbooks' + if mfe_base_url: + textbooks_url = course_mfe_url + return textbooks_url + + +def get_group_configurations_url(course_locator) -> str: + """ + Gets course authoring microfrontend URL for group configurations page view. + """ + group_configurations_url = None + if use_new_group_configurations_page(course_locator): + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/group_configurations' + if mfe_base_url: + group_configurations_url = course_mfe_url + return group_configurations_url + + def get_custom_pages_url(course_locator) -> str: """ Gets course authoring microfrontend URL for custom pages view.