Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,7 @@ 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)
return True

def get_enable_course_optimizer(self, obj):
"""
Expand Down
18 changes: 0 additions & 18 deletions cms/djangoapps/contentstore/toggles.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,24 +255,6 @@ def use_new_unit_page(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
Expand Down
10 changes: 2 additions & 8 deletions cms/djangoapps/contentstore/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
libraries_v2_enabled,
split_library_view_on_dashboard,
use_new_export_page,
use_new_group_configurations_page,
use_new_import_page,
use_new_unit_page,
)
Expand Down Expand Up @@ -475,13 +474,8 @@ 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)
return f'{mfe_base_url}/course/{course_locator}/group_configurations' if mfe_base_url else None


def get_custom_pages_url(course_locator) -> str:
Expand Down
7 changes: 1 addition & 6 deletions cms/djangoapps/contentstore/views/course.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,15 +98,13 @@
from ..tasks import rerun_course as rerun_course_task
from ..toggles import (
default_enable_flexible_peer_openassessments,
use_new_group_configurations_page,
)
from ..utils import (
add_instructor,
get_advanced_settings_url,
get_course_outline_url,
get_course_rerun_context,
get_grading_url,
get_group_configurations_context,
get_group_configurations_url,
get_lms_link_for_item,
get_schedule_details_url,
Expand Down Expand Up @@ -1843,10 +1841,7 @@ def group_configurations_list_handler(request, course_key_string):
course = get_course_and_check_manage_group_configurations_access(course_key, request.user)

if 'text/html' in request.META.get('HTTP_ACCEPT', 'text/html'):
if use_new_group_configurations_page(course_key):
return redirect(get_group_configurations_url(course_key))
group_configurations_context = get_group_configurations_context(course, store)
return render_to_response('group_configurations.html', group_configurations_context)
return redirect(get_group_configurations_url(course_key))
elif "application/json" in request.META.get('HTTP_ACCEPT'):
if request.method == 'POST':
# create a new group configuration for the course
Expand Down
38 changes: 6 additions & 32 deletions cms/djangoapps/contentstore/views/tests/test_exam_settings_view.py
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
"""
Exam Settings View Tests
"""
import ddt
from django.conf import settings
from django.test.utils import override_settings
from edx_toggles.toggles.testutils import override_waffle_flag

from cms.djangoapps.contentstore import toggles
from cms.djangoapps.contentstore.tests.utils import CourseTestCase
from cms.djangoapps.contentstore.utils import reverse_course_url
from common.djangoapps.util.testing import UrlResetMixin


@ddt.ddt
@override_settings(
FEATURES={
**settings.FEATURES,
"CERTIFICATES_HTML_VIEW": True,
"ENABLE_PROCTORED_EXAMS": True,
},
)
@override_waffle_flag(toggles.LEGACY_STUDIO_CONFIGURATIONS, True)
@override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example')
class TestExamSettingsView(CourseTestCase, UrlResetMixin):
"""
Expand All @@ -33,33 +28,6 @@ def setUp(self):
super().setUp()
self.reset_urls()

@override_waffle_flag(toggles.LEGACY_STUDIO_EXAM_SETTINGS, True)
@ddt.data(
"group_configurations_list_handler",
)
def test_view_without_exam_settings_enabled(self, handler):
"""
Tests pages should not have `Exam Settings` item
if course does not have the Exam Settings view enabled.
"""
outline_url = reverse_course_url(handler, self.course.id)
resp = self.client.get(outline_url, HTTP_ACCEPT='text/html')
self.assertEqual(resp.status_code, 200) # noqa: PT009
self.assertNotContains(resp, 'Proctored Exam Settings')

@ddt.data(
"group_configurations_list_handler",
)
def test_view_with_exam_settings_enabled(self, handler):
"""
Tests pages should have `Exam Settings` item
if course does have Exam Settings view enabled.
"""
outline_url = reverse_course_url(handler, self.course.id)
resp = self.client.get(outline_url, HTTP_ACCEPT='text/html')
self.assertEqual(resp.status_code, 200) # noqa: PT009
self.assertContains(resp, 'Proctored Exam Settings')

def test_grading_handler_redirects_to_mfe(self):
"""grading_handler redirects to the authoring MFE."""
url = reverse_course_url('grading_handler', self.course.id)
Expand All @@ -83,3 +51,9 @@ def test_advanced_settings_handler_redirects_to_mfe(self):
url = reverse_course_url('advanced_settings_handler', self.course.id)
resp = self.client.get(url, HTTP_ACCEPT='text/html')
self.assertEqual(resp.status_code, 302) # noqa: PT009

def test_group_configurations_list_handler_redirects_to_mfe(self):
"""group_configurations_list_handler redirects to the authoring MFE."""
url = reverse_course_url('group_configurations_list_handler', self.course.id)
resp = self.client.get(url, HTTP_ACCEPT='text/html')
self.assertEqual(resp.status_code, 302) # noqa: PT009
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,11 @@

import ddt
from django.test import Client
from edx_toggles.toggles.testutils import override_waffle_flag
from openedx_authz.constants.roles import COURSE_DATA_RESEARCHER, COURSE_STAFF
from rest_framework import status

from cms.djangoapps.contentstore import toggles
from cms.djangoapps.contentstore.api.tests.base import BaseCourseViewTest
from cms.djangoapps.contentstore.course_group_config import (
CONTENT_GROUP_CONFIGURATION_NAME,
ENROLLMENT_SCHEME,
GroupConfiguration,
)
Expand Down Expand Up @@ -274,27 +271,12 @@ def _url(self):
"""
return reverse_course_url('group_configurations_list_handler', self.course.id)

@override_waffle_flag(toggles.LEGACY_STUDIO_CONFIGURATIONS, True)
def test_view_index_ok(self):
"""
Basic check that the groups configuration page responds correctly.
Basic check that the groups configuration page redirects to the MFE.
"""

# This creates a random UserPartition.
self.course.user_partitions = [
UserPartition(0, 'First name', 'First description', [Group(0, 'Group A'), Group(1, 'Group B'), Group(2, 'Group C')]), # pylint: disable=line-too-long
]
self.save_course()

if 'split_test' not in self.course.advanced_modules:
self.course.advanced_modules.append('split_test')
self.store.update_item(self.course, self.user.id)

response = self.client.get(self._url())
self.assertEqual(response.status_code, 200) # noqa: PT009
self.assertContains(response, 'First name', count=1)
self.assertContains(response, 'Group C')
self.assertContains(response, CONTENT_GROUP_CONFIGURATION_NAME)
self.assertEqual(response.status_code, 302) # noqa: PT009

def test_unsupported_http_accept_header(self):
"""
Expand Down
1 change: 0 additions & 1 deletion cms/static/cms/js/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
'js/factories/base',
'js/factories/course_create_rerun',
'js/factories/export',
'js/factories/group_configurations',
'js/factories/index',
'js/factories/outline',
]),
Expand Down
2 changes: 0 additions & 2 deletions cms/static/cms/js/spec/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -250,13 +250,11 @@
'js/spec/views/assets_spec',
'js/spec/views/baseview_spec',
'js/spec/views/paged_container_spec',
'js/spec/views/group_configuration_spec',
'js/spec/views/unit_outline_spec',
'js/spec/views/xblock_spec',
'js/spec/views/xblock_validation_spec',
'js/spec/views/license_spec',
'js/spec/views/paging_spec',
'js/spec/views/pages/group_configurations_spec',
'js/spec/views/pages/course_rerun_spec',
'js/spec/views/pages/index_spec',
'js/spec/views/pages/library_users_spec',
Expand Down
3 changes: 1 addition & 2 deletions cms/static/cms/js/spec/main_squire.js
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,7 @@
testFiles = [
'js/spec/views/assets_squire_spec',
'js/spec/video/translations_editor_spec',
'js/spec/video/file_uploader_editor_spec',
'js/spec/models/group_configuration_spec'
'js/spec/video/file_uploader_editor_spec'
];

i = 0;
Expand Down
12 changes: 0 additions & 12 deletions cms/static/js/collections/group_configuration.js

This file was deleted.

35 changes: 0 additions & 35 deletions cms/static/js/factories/group_configurations.js

This file was deleted.

Loading
Loading