diff --git a/cms/djangoapps/contentstore/rest_api/v1/serializers/__init__.py b/cms/djangoapps/contentstore/rest_api/v1/serializers/__init__.py index 26403f734775..62aea5524930 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/serializers/__init__.py +++ b/cms/djangoapps/contentstore/rest_api/v1/serializers/__init__.py @@ -6,7 +6,6 @@ from .course_index import CourseIndexSerializer # noqa: F401 from .course_rerun import CourseRerunSerializer # noqa: F401 from .course_team import CourseTeamSerializer # noqa: F401 -from .course_waffle_flags import CourseWaffleFlagsSerializer # noqa: F401 from .grading import CourseGradingModelSerializer, CourseGradingSerializer # noqa: F401 from .group_configurations import CourseGroupConfigurationsSerializer # noqa: F401 from .home import CourseHomeTabSerializer, LibraryTabSerializer, StudioHomeSerializer # noqa: F401 diff --git a/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py b/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py deleted file mode 100644 index 46f8cebd140d..000000000000 --- a/cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py +++ /dev/null @@ -1,224 +0,0 @@ -""" -API Serializers for course waffle flags -""" - -from rest_framework import serializers - -from cms.djangoapps.contentstore import toggles -from openedx.core import toggles as core_toggles - - -class CourseWaffleFlagsSerializer(serializers.Serializer): - """ - Serializer for course waffle flags - """ - use_new_home_page = serializers.SerializerMethodField() - use_new_custom_pages = serializers.SerializerMethodField() - use_new_schedule_details_page = serializers.SerializerMethodField() - use_new_advanced_settings_page = serializers.SerializerMethodField() - use_new_grading_page = serializers.SerializerMethodField() - use_new_updates_page = serializers.SerializerMethodField() - use_new_import_page = serializers.SerializerMethodField() - use_new_export_page = serializers.SerializerMethodField() - use_new_files_uploads_page = serializers.SerializerMethodField() - use_new_pdf_editor = serializers.SerializerMethodField() - use_new_video_uploads_page = serializers.SerializerMethodField() - use_new_course_outline_page = serializers.SerializerMethodField() - use_new_unit_page = serializers.SerializerMethodField() - use_new_course_team_page = serializers.SerializerMethodField() - use_new_certificates_page = serializers.SerializerMethodField() - use_new_textbooks_page = serializers.SerializerMethodField() - use_new_group_configurations_page = serializers.SerializerMethodField() - enable_course_optimizer = serializers.SerializerMethodField() - use_react_markdown_editor = serializers.SerializerMethodField() - use_video_gallery_flow = serializers.SerializerMethodField() - enable_course_optimizer_check_prev_run_links = serializers.SerializerMethodField() - enable_authz_course_authoring = serializers.SerializerMethodField() - - def get_course_key(self): - """ - Retrieve the course_key from the context - """ - return self.context.get("course_key") - - def get_use_new_home_page(self, obj): - """ - Method to indicate whether we should use the new home page. - - This used to be based on a waffle flag but the flag is being removed so we - default it to true for now until we can remove the need for it from the consumers - of this serializer and the related APIs. - - See https://github.com/openedx/edx-platform/issues/37497 - """ - return True - - def get_use_new_custom_pages(self, obj): - """ - Method to indicate whether or not to use the new custom pages - - This used to be based on a waffle flag but the flag is being removed so we - default it to true for now until we can remove the need for it from the consumers - of this serializer and the related APIs. - - See https://github.com/openedx/edx-platform/issues/37497 - """ - return True - - def get_use_new_schedule_details_page(self, obj): - """ - Method to get the use_new_schedule_details_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_schedule_details_page(course_key) - - def get_use_new_advanced_settings_page(self, obj): - """ - Method to get the use_new_advanced_settings_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_advanced_settings_page(course_key) - - def get_use_new_grading_page(self, obj): - """ - Method to get the use_new_grading_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_grading_page(course_key) - - def get_use_new_updates_page(self, obj): - """ - Method to indicate if we should use the new updates_page - - This used to be based on a waffle flag but the flag is being removed so we - default it to true for now until we can remove the need for it from the consumers - of this serializer and the related APIs. - - See https://github.com/openedx/edx-platform/issues/37497 - """ - return True - - def get_use_new_import_page(self, obj): - """ - Method to get the use_new_import_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_import_page(course_key) - - def get_use_new_export_page(self, obj): - """ - Method to get the use_new_export_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_export_page(course_key) - - def get_use_new_files_uploads_page(self, obj): - """ - Method to get the use_new_files_uploads_page switch - - Always true, because the switch is being removed an the new experience - should alawys be on. - """ - return True - - def get_use_new_pdf_editor(self, obj): - """ - Method to get the use_new_pdf_editor switch - """ - return toggles.use_new_pdf_editor() - - def get_use_new_video_uploads_page(self, obj): - """ - Method to get the use_new_video_uploads_page switch. - - This is off by default because the video uploads page requires the edX - video pipeline which is not available to the open source community. - - See https://github.com/openedx/openedx-platform/issues/37972 - """ - course_key = self.get_course_key() - return toggles.use_new_video_uploads_page(course_key) - - def get_use_new_course_outline_page(self, obj): - """ - Method to get the use_new_course_outline_page switch - - Always true, because the switch is being removed and the new experience - should always be on. This function will be removed in - https://github.com/openedx/edx-platform/issues/37497 - """ - return True - - def get_use_new_unit_page(self, obj): - """ - Method to get the use_new_unit_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_unit_page(course_key) - - def get_use_new_course_team_page(self, obj): - """ - Method to get the use_new_course_team_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_course_team_page(course_key) - - def get_use_new_certificates_page(self, obj): - """ - Method to get the use_new_certificates_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_certificates_page(course_key) - - def get_use_new_textbooks_page(self, obj): - """ - Method to indicate whether we should use_new_textbooks_page or not. - - This used to be based on a waffle flag but the flag is being removed so we - default it to true for now until we can remove the need for it from the consumers - of this serializer and the related APIs. - - See https://github.com/openedx/edx-platform/issues/37497 - """ - return True - - def get_use_new_group_configurations_page(self, obj): - """ - Method to get the use_new_group_configurations_page switch - """ - course_key = self.get_course_key() - return toggles.use_new_group_configurations_page(course_key) - - def get_enable_course_optimizer(self, obj): - """ - Method to get the enable_course_optimizer waffle flag - """ - course_key = self.get_course_key() - return toggles.enable_course_optimizer(course_key) - - def get_use_react_markdown_editor(self, obj): - """ - Method to get the use_react_markdown_editor waffle flag - """ - course_key = self.get_course_key() - return toggles.use_react_markdown_editor(course_key) - - def get_use_video_gallery_flow(self, obj): - """ - Method to get the use_video_gallery_flow waffle flag - """ - return toggles.use_video_gallery_flow() - - def get_enable_course_optimizer_check_prev_run_links(self, obj): - """ - Method to get the enable_course_optimizer_check_prev_run_links waffle flag - """ - course_key = self.get_course_key() - return toggles.enable_course_optimizer_check_prev_run_links(course_key) - - def get_enable_authz_course_authoring(self, obj): - """ - Method to get the authz.enable_course_authoring waffle flag - """ - course_key = self.get_course_key() - return core_toggles.enable_authz_course_authoring(course_key) diff --git a/cms/djangoapps/contentstore/rest_api/v1/urls.py b/cms/djangoapps/contentstore/rest_api/v1/urls.py index 685a81d778ce..4e917d352034 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/urls.py +++ b/cms/djangoapps/contentstore/rest_api/v1/urls.py @@ -18,7 +18,6 @@ CourseTeamView, CourseTextbooksView, CourseVideosView, - CourseWaffleFlagsView, HelpUrlsView, HomePageCoursesView, HomePageLibrariesView, @@ -139,11 +138,6 @@ ContainerChildrenView.as_view(), name="container_children" ), - re_path( - fr'^course_waffle_flags(?:/{COURSE_ID_PATTERN})?$', - CourseWaffleFlagsView.as_view(), - name="course_waffle_flags" - ), # Authoring API # Do not use under v1 yet (Nov. 23). The Authoring API is still experimental and the v0 versions should be used diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/__init__.py b/cms/djangoapps/contentstore/rest_api/v1/views/__init__.py index 7654c9e0befc..a1c8505d95c8 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/views/__init__.py +++ b/cms/djangoapps/contentstore/rest_api/v1/views/__init__.py @@ -6,7 +6,6 @@ from .course_index import ContainerChildrenView, CourseIndexView # noqa: F401 from .course_rerun import CourseRerunView # noqa: F401 from .course_team import CourseTeamView # noqa: F401 -from .course_waffle_flags import CourseWaffleFlagsView # noqa: F401 from .grading import CourseGradingView # noqa: F401 from .group_configurations import CourseGroupConfigurationsView # noqa: F401 from .help_urls import HelpUrlsView # noqa: F401 diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py b/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py deleted file mode 100644 index 69b2898912aa..000000000000 --- a/cms/djangoapps/contentstore/rest_api/v1/views/course_waffle_flags.py +++ /dev/null @@ -1,75 +0,0 @@ -""" API Views for course waffle flags """ - -from opaque_keys.edx.keys import CourseKey -from rest_framework.decorators import APIView -from rest_framework.response import Response - -from openedx.core.lib.api.view_utils import view_auth_classes - -from ..serializers import CourseWaffleFlagsSerializer - - -@view_auth_classes(is_authenticated=True) -class CourseWaffleFlagsView(APIView): - """ - API view to retrieve course waffle flag settings for a specific course. - - This view provides a GET endpoint that returns the status of various waffle - flags for a given course. It requires the user to be authenticated. - """ - - def get(self, request, course_id=None): - """ - Retrieve the waffle flag settings for the specified course. - - Args: - request (HttpRequest): The HTTP request object. - course_id (str, optional): The ID of the course for which to retrieve - the waffle flag settings. If not provided, - defaults to None. - - Returns: - Response: A JSON response containing the status of various waffle flags - for the specified course. - - **Example Request** - - GET /api/contentstore/v1/course_waffle_flags - GET /api/contentstore/v1/course_waffle_flags/course-v1:test+test+test - - **Response Values** - - A JSON response containing the status of various waffle flags - for the specified course. - - **Example Response** - - ```json - { - "use_new_home_page": true, - "use_new_custom_pages": true, - "use_new_schedule_details_page": true, - "use_new_advanced_settings_page": true, - "use_new_grading_page": true, - "use_new_updates_page": true, - "use_new_import_page": true, - "use_new_export_page": true, - "use_new_files_uploads_page": true, - "use_new_video_uploads_page": false, - "use_new_course_outline_page": true, - "use_new_unit_page": false, - "use_new_course_team_page": true, - "use_new_certificates_page": true, - "use_new_textbooks_page": true, - "use_new_group_configurations_page": true, - "use_react_markdown_editor": true, - "use_video_gallery_flow": true - } - ``` - """ - course_key = CourseKey.from_string(course_id) if course_id else None - serializer = CourseWaffleFlagsSerializer( - context={"course_key": course_key}, data={} - ) - serializer.is_valid(raise_exception=True) - return Response(serializer.data) diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py deleted file mode 100644 index 39783e191da4..000000000000 --- a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_course_waffle_flags.py +++ /dev/null @@ -1,73 +0,0 @@ -""" -Unit tests for the course waffle flags view -""" - -from django.urls import reverse - -from cms.djangoapps.contentstore import toggles -from cms.djangoapps.contentstore.tests.utils import CourseTestCase -from openedx.core.djangoapps.waffle_utils.models import WaffleFlagCourseOverrideModel - - -class CourseWaffleFlagsViewTest(CourseTestCase): - """ - Basic test for the CourseWaffleFlagsView endpoint, which returns waffle flag states - for a specific course or globally if no course ID is provided. - """ - - maxDiff = None # Show the whole dictionary in the diff - - defaults = { - "enable_course_optimizer": False, - "use_new_advanced_settings_page": True, - "use_new_certificates_page": True, - "use_new_course_outline_page": True, - "use_new_course_team_page": True, - "use_new_custom_pages": True, - "use_new_export_page": True, - "use_new_files_uploads_page": True, - "use_new_grading_page": True, - "use_new_group_configurations_page": True, - "use_new_home_page": True, - "use_new_import_page": True, - "use_new_schedule_details_page": True, - "use_new_textbooks_page": True, - "use_new_unit_page": True, - "use_new_updates_page": True, - "use_new_video_uploads_page": False, - "use_new_pdf_editor": True, - "use_react_markdown_editor": False, - "use_video_gallery_flow": False, - "enable_course_optimizer_check_prev_run_links": False, - "enable_authz_course_authoring": False, - } - - def setUp(self): - super().setUp() - WaffleFlagCourseOverrideModel.objects.create( - waffle_flag=toggles.ENABLE_COURSE_OPTIMIZER.name, - course_id=self.course.id, - enabled=True, - ) - WaffleFlagCourseOverrideModel.objects.create( - waffle_flag=toggles.ENABLE_COURSE_OPTIMIZER_CHECK_PREV_RUN_LINKS.name, - course_id=self.course.id, - enabled=True, - ) - - def test_global_defaults(self): - url = reverse("cms.djangoapps.contentstore:v1:course_waffle_flags") - response = self.client.get(url) - assert response.data == self.defaults - - def test_course_override(self): - url = reverse( - "cms.djangoapps.contentstore:v1:course_waffle_flags", - kwargs={"course_id": self.course.id}, - ) - response = self.client.get(url) - assert response.data == { - **self.defaults, - "enable_course_optimizer": True, - "enable_course_optimizer_check_prev_run_links": True, - } diff --git a/cms/djangoapps/contentstore/toggles.py b/cms/djangoapps/contentstore/toggles.py index 30a030f966a9..51c2bbbe9c8a 100644 --- a/cms/djangoapps/contentstore/toggles.py +++ b/cms/djangoapps/contentstore/toggles.py @@ -178,101 +178,6 @@ def use_react_markdown_editor(course_key): return ENABLE_REACT_MARKDOWN_EDITOR.is_enabled(course_key) -# .. toggle_name: legacy_studio.schedule_details -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Studio Schedule & Details page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_SCHEDULE_DETAILS = CourseWaffleFlag('legacy_studio.schedule_details', __name__) - - -def use_new_schedule_details_page(course_key): - """ - Returns a boolean if new studio schedule and details mfe is enabled - """ - return not LEGACY_STUDIO_SCHEDULE_DETAILS.is_enabled(course_key) - - -# .. toggle_name: legacy_studio.advanced_settings -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Studio Advanced Settings page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_ADVANCED_SETTINGS = CourseWaffleFlag('legacy_studio.advanced_settings', __name__) - - -def use_new_advanced_settings_page(course_key): - """ - Returns a boolean if new studio advanced settings pafe mfe is enabled - """ - return not LEGACY_STUDIO_ADVANCED_SETTINGS.is_enabled(course_key) - - -# .. toggle_name: legacy_studio.grading -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Studio Course Grading page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_GRADING = CourseWaffleFlag('legacy_studio.grading', __name__) - - -def use_new_grading_page(course_key): - """ - Returns a boolean if new studio grading mfe is enabled - """ - return not LEGACY_STUDIO_GRADING.is_enabled(course_key) - - -# .. toggle_name: legacy_studio.import -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Course Import page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_IMPORT = CourseWaffleFlag('legacy_studio.import', __name__) - - -def use_new_import_page(course_key): - """ - Returns a boolean if new studio import mfe is enabled - """ - return not LEGACY_STUDIO_IMPORT.is_enabled(course_key) - - -# .. toggle_name: legacy_studio.export -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Course Export page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_EXPORT = CourseWaffleFlag('legacy_studio.export', __name__) - - -def use_new_export_page(course_key): - """ - Returns a boolean if new studio export mfe is enabled - """ - return not LEGACY_STUDIO_EXPORT.is_enabled(course_key) - - # .. toggle_name: contentstore.new_studio_mfe.use_new_video_uploads_page # .. toggle_implementation: CourseWaffleFlag # .. toggle_default: False @@ -327,63 +232,6 @@ def use_new_unit_page(course_key): return not LEGACY_STUDIO_UNIT_EDITOR.is_enabled(course_key) -# .. toggle_name: legacy_studio.course_team -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Studio Course Team page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_COURSE_TEAM = CourseWaffleFlag('legacy_studio.course_team', __name__) - - -def use_new_course_team_page(course_key): - """ - Returns a boolean if new studio course team mfe is enabled - """ - return not LEGACY_STUDIO_COURSE_TEAM.is_enabled(course_key) - - -# .. toggle_name: legacy_studio.certificates -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Studio Course Certificates page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_CERTIFICATES = CourseWaffleFlag('legacy_studio.certificates', __name__) - - -def use_new_certificates_page(course_key): - """ - Returns a boolean if new studio certificates mfe is enabled - """ - return not LEGACY_STUDIO_CERTIFICATES.is_enabled(course_key) - - -# .. toggle_name: legacy_studio.configurations -# .. toggle_implementation: WaffleFlag -# .. toggle_default: False -# .. toggle_description: Temporarily fall back to the old Studio Configurations page. -# .. toggle_use_cases: temporary -# .. toggle_creation_date: 2025-03-14 -# .. toggle_target_removal_date: 2025-09-14 -# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275 -# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available. -LEGACY_STUDIO_CONFIGURATIONS = CourseWaffleFlag('legacy_studio.configurations', __name__) - - -def use_new_group_configurations_page(course_key): - """ - Returns a boolean if new studio group configurations mfe is enabled - """ - return not LEGACY_STUDIO_CONFIGURATIONS.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 35818125efab..ef6cb5e542d9 100644 --- a/cms/djangoapps/contentstore/utils.py +++ b/cms/djangoapps/contentstore/utils.py @@ -41,14 +41,6 @@ libraries_v1_enabled, libraries_v2_enabled, split_library_view_on_dashboard, - use_new_advanced_settings_page, - use_new_certificates_page, - use_new_course_team_page, - use_new_export_page, - use_new_grading_page, - use_new_group_configurations_page, - use_new_import_page, - use_new_schedule_details_page, use_new_unit_page, ) from cms.djangoapps.models.settings.course_grading import CourseGradingModel @@ -304,52 +296,36 @@ def get_schedule_details_url(course_locator) -> str: """ Gets course authoring microfrontend URL for schedule and details pages view. """ - schedule_details_url = None - if use_new_schedule_details_page(course_locator): - mfe_base_url = get_course_authoring_url(course_locator) - course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/details' - if mfe_base_url: - schedule_details_url = course_mfe_url - return schedule_details_url + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/details' + return course_mfe_url if mfe_base_url else None def get_advanced_settings_url(course_locator) -> str: """ Gets course authoring microfrontend URL for advanced settings page view. """ - advanced_settings_url = None - if use_new_advanced_settings_page(course_locator): - mfe_base_url = get_course_authoring_url(course_locator) - course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/advanced' - if mfe_base_url: - advanced_settings_url = course_mfe_url - return advanced_settings_url + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/advanced' + return course_mfe_url if mfe_base_url else None def get_grading_url(course_locator) -> str: """ Gets course authoring microfrontend URL for grading page view. """ - grading_url = None - if use_new_grading_page(course_locator): - mfe_base_url = get_course_authoring_url(course_locator) - course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/grading' - if mfe_base_url: - grading_url = course_mfe_url - return grading_url + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/settings/grading' + return course_mfe_url if mfe_base_url else None def get_course_team_url(course_locator) -> str: """ Gets course authoring microfrontend URL for course team page view. """ - course_team_url = None - if use_new_course_team_page(course_locator): - mfe_base_url = get_course_authoring_url(course_locator) - course_mfe_url = f'{mfe_base_url}/course/{course_locator}/course_team' - if mfe_base_url: - course_team_url = course_mfe_url - return course_team_url + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/course_team' + return course_mfe_url if mfe_base_url else None def get_updates_url(course_locator) -> str: @@ -368,26 +344,18 @@ def get_import_url(course_locator) -> str: """ Gets course authoring microfrontend URL for import page view. """ - import_url = None - if use_new_import_page(course_locator): - mfe_base_url = get_course_authoring_url(course_locator) - course_mfe_url = f'{mfe_base_url}/course/{course_locator}/import' - if mfe_base_url: - import_url = course_mfe_url - return import_url + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/import' + return course_mfe_url if mfe_base_url else None def get_export_url(course_locator) -> str: """ Gets course authoring microfrontend URL for export page view. """ - export_url = None - if use_new_export_page(course_locator): - mfe_base_url = get_course_authoring_url(course_locator) - course_mfe_url = f'{mfe_base_url}/course/{course_locator}/export' - if mfe_base_url: - export_url = course_mfe_url - return export_url + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/export' + return course_mfe_url if mfe_base_url else None def get_optimizer_url(course_locator) -> str: @@ -470,13 +438,9 @@ 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 + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/certificates' + return course_mfe_url if mfe_base_url else None def get_textbooks_url(course_locator) -> str: @@ -495,13 +459,9 @@ 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 + mfe_base_url = get_course_authoring_url(course_locator) + course_mfe_url = f'{mfe_base_url}/course/{course_locator}/group_configurations' + return course_mfe_url if mfe_base_url else None def get_custom_pages_url(course_locator) -> str: