diff --git a/cms/djangoapps/contentstore/rest_api/v1/serializers/home.py b/cms/djangoapps/contentstore/rest_api/v1/serializers/home.py index 5abcda673aa7..aefab2c6b1df 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/serializers/home.py +++ b/cms/djangoapps/contentstore/rest_api/v1/serializers/home.py @@ -47,7 +47,9 @@ class CourseHomeSerializer(serializers.Serializer): in_process_course_actions = UnsucceededCourseSerializer(many=True, required=False, allow_null=True) libraries = LibraryViewSerializer(many=True, required=False, allow_null=True) libraries_enabled = serializers.BooleanField() + taxonomies_enabled = serializers.BooleanField() library_authoring_mfe_url = serializers.CharField() + taxonomy_list_mfe_url = serializers.CharField() optimization_enabled = serializers.BooleanField() redirect_to_library_authoring_mfe = serializers.BooleanField() request_course_creator_url = serializers.CharField() diff --git a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_home.py b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_home.py index 110ee24ba150..99f1b450cc0d 100644 --- a/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_home.py +++ b/cms/djangoapps/contentstore/rest_api/v1/views/tests/test_home.py @@ -4,11 +4,15 @@ import ddt from django.conf import settings from django.urls import reverse -from edx_toggles.toggles.testutils import override_waffle_switch +from edx_toggles.toggles.testutils import ( + override_waffle_switch, + override_waffle_flag, +) from rest_framework import status from cms.djangoapps.contentstore.tests.utils import CourseTestCase from cms.djangoapps.contentstore.views.course import ENABLE_GLOBAL_STAFF_OPTIMIZATION +from cms.djangoapps.contentstore.toggles import ENABLE_TAGGING_TAXONOMY_LIST_PAGE from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory from xmodule.modulestore.tests.factories import CourseFactory @@ -49,7 +53,9 @@ def test_home_page_response(self): "in_process_course_actions": [], "libraries": [], "libraries_enabled": True, + "taxonomies_enabled": False, "library_authoring_mfe_url": settings.LIBRARY_AUTHORING_MICROFRONTEND_URL, + "taxonomy_list_mfe_url": None, "optimization_enabled": False, "redirect_to_library_authoring_mfe": False, "request_course_creator_url": "/request_course_creator", @@ -87,3 +93,12 @@ def test_org_query_if_empty(self): response = self.client.get(self.url) self.assertEqual(len(response.data['courses']), 0) self.assertEqual(response.status_code, status.HTTP_200_OK) + + @override_waffle_flag(ENABLE_TAGGING_TAXONOMY_LIST_PAGE, True) + def test_taxonomy_list_link(self): + response = self.client.get(self.url) + self.assertTrue(response.data['taxonomies_enabled']) + self.assertEqual( + response.data['taxonomy_list_mfe_url'], + f'{settings.COURSE_AUTHORING_MICROFRONTEND_URL}/taxonomy-list' + ) diff --git a/cms/djangoapps/contentstore/toggles.py b/cms/djangoapps/contentstore/toggles.py index a2a8055b5a6b..ac8469678f78 100644 --- a/cms/djangoapps/contentstore/toggles.py +++ b/cms/djangoapps/contentstore/toggles.py @@ -537,3 +537,21 @@ def default_enable_flexible_peer_openassessments(course_key): level to opt in/out of rolling forward this feature. """ return DEFAULT_ENABLE_FLEXIBLE_PEER_OPENASSESSMENTS.is_enabled(course_key) + + +# .. toggle_name: new_studio_mfe.use_tagging_taxonomy_list_page +# .. toggle_implementation: WaffleFlag +# .. toggle_default: False +# .. toggle_description: This flag enables the use of the taxonomy list page. +# .. toggle_use_cases: temporary +# .. toggle_creation_date: 2023-10-06 +# .. toggle_target_removal_date: TBA +# .. toggle_warning: +ENABLE_TAGGING_TAXONOMY_LIST_PAGE = WaffleFlag('new_studio_mfe.use_tagging_taxonomy_list_page', __name__) + + +def use_tagging_taxonomy_list_page(): + """ + Returns a boolean if taxonomy list page is enabled + """ + return ENABLE_TAGGING_TAXONOMY_LIST_PAGE.is_enabled() diff --git a/cms/djangoapps/contentstore/utils.py b/cms/djangoapps/contentstore/utils.py index 1a4b709622e6..83c26197a4a7 100644 --- a/cms/djangoapps/contentstore/utils.py +++ b/cms/djangoapps/contentstore/utils.py @@ -76,6 +76,7 @@ use_new_video_editor, use_new_video_uploads_page, use_new_custom_pages, + use_tagging_taxonomy_list_page, ) from cms.djangoapps.models.settings.course_grading import CourseGradingModel from xmodule.library_tools import LibraryToolsService @@ -433,6 +434,18 @@ def get_custom_pages_url(course_locator) -> str: return custom_pages_url +def get_taxonomy_list_url(): + """ + Gets course authoring microfrontend URL for taxonomy list page view. + """ + taxonomy_list_url = None + if use_tagging_taxonomy_list_page(): + mfe_base_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL + if mfe_base_url: + taxonomy_list_url = f'{mfe_base_url}/taxonomy-list' + return taxonomy_list_url + + def course_import_olx_validation_is_enabled(): """ Check if course olx validation is enabled on course import. @@ -1514,8 +1527,10 @@ def format_in_process_course_view(uca): 'archived_courses': archived_courses, 'in_process_course_actions': in_process_course_actions, 'libraries_enabled': LIBRARIES_ENABLED, + 'taxonomies_enabled': use_tagging_taxonomy_list_page(), 'redirect_to_library_authoring_mfe': should_redirect_to_library_authoring_mfe(), 'library_authoring_mfe_url': LIBRARY_AUTHORING_MICROFRONTEND_URL, + 'taxonomy_list_mfe_url': get_taxonomy_list_url(), 'libraries': libraries, 'show_new_library_button': user_can_create_library(user) and not should_redirect_to_library_authoring_mfe(), 'user': user, diff --git a/cms/templates/index.html b/cms/templates/index.html index dbd83b2ff518..766d68da780c 100644 --- a/cms/templates/index.html +++ b/cms/templates/index.html @@ -360,6 +360,9 @@