Skip to content

Commit 4743744

Browse files
Merge branch 'master' into ktyagi/SSOPII
2 parents b70024a + d5111c7 commit 4743744

78 files changed

Lines changed: 114 additions & 8048 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cms/djangoapps/contentstore/rest_api/v1/serializers/course_waffle_flags.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ def get_use_new_advanced_settings_page(self, obj):
8181
"""
8282
Method to get the use_new_advanced_settings_page switch
8383
"""
84-
course_key = self.get_course_key()
85-
return toggles.use_new_advanced_settings_page(course_key)
84+
return True
8685

8786
def get_use_new_grading_page(self, obj):
8887
"""
@@ -112,15 +111,13 @@ def get_use_new_import_page(self, obj):
112111
"""
113112
Method to get the use_new_import_page switch
114113
"""
115-
course_key = self.get_course_key()
116-
return toggles.use_new_import_page(course_key)
114+
return True
117115

118116
def get_use_new_export_page(self, obj):
119117
"""
120118
Method to get the use_new_export_page switch
121119
"""
122-
course_key = self.get_course_key()
123-
return toggles.use_new_export_page(course_key)
120+
return True
124121

125122
def get_use_new_files_uploads_page(self, obj):
126123
"""
@@ -194,8 +191,7 @@ def get_use_new_group_configurations_page(self, obj):
194191
"""
195192
Method to get the use_new_group_configurations_page switch
196193
"""
197-
course_key = self.get_course_key()
198-
return toggles.use_new_group_configurations_page(course_key)
194+
return True
199195

200196
def get_enable_course_optimizer(self, obj):
201197
"""

cms/djangoapps/contentstore/tests/test_contentstore.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1487,11 +1487,11 @@ def test_get_json(handler):
14871487
self.assertContains(resp, 'Chapter 2')
14881488

14891489
# go to various pages
1490-
with override_waffle_flag(toggles.LEGACY_STUDIO_IMPORT, True):
1491-
test_get_html('import_handler')
1492-
with override_waffle_flag(toggles.LEGACY_STUDIO_EXPORT, True):
1493-
test_get_html('export_handler')
14941490
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
1491+
resp = self.client.get_html(get_url('import_handler', course_key, 'course_key_string'))
1492+
self.assertEqual(resp.status_code, 302) # noqa: PT009
1493+
resp = self.client.get_html(get_url('export_handler', course_key, 'course_key_string'))
1494+
self.assertEqual(resp.status_code, 302) # noqa: PT009
14951495
resp = self.client.get_html(get_url('course_team_handler', course_key, 'course_key_string'))
14961496
self.assertEqual(resp.status_code, 302) # noqa: PT009
14971497
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
@@ -1500,8 +1500,9 @@ def test_get_json(handler):
15001500
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
15011501
resp = self.client.get_html(get_url('grading_handler', course_key, 'course_key_string'))
15021502
self.assertEqual(resp.status_code, 302) # noqa: PT009
1503-
with override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True):
1504-
test_get_html('advanced_settings_handler')
1503+
with override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
1504+
resp = self.client.get_html(get_url('advanced_settings_handler', course_key, 'course_key_string'))
1505+
self.assertEqual(resp.status_code, 302) # noqa: PT009
15051506
test_get_json('textbooks_list_handler')
15061507

15071508
# Test that studio updates load

cms/djangoapps/contentstore/tests/test_course_settings.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
from pytz import UTC
3030
from xblock.fields import Date
3131

32-
from cms.djangoapps.contentstore import toggles
3332
from cms.djangoapps.contentstore.utils import reverse_course_url, reverse_usage_url
3433
from cms.djangoapps.models.settings.course_grading import (
3534
GRADING_POLICY_CHANGED_EVENT_TYPE,
@@ -123,18 +122,16 @@ def setUp(self):
123122
CourseStaffRole(self.course.id).add_users(self.nonstaff)
124123

125124
@override_settings(FEATURES={'DISABLE_MOBILE_COURSE_AVAILABLE': True})
126-
@override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True)
127125
def test_mobile_field_available(self):
128126

129127
"""
130128
Test to check `Mobile Course Available` field is not viewable in Studio
131129
when DISABLE_MOBILE_COURSE_AVAILABLE is true.
132130
"""
133131

134-
response = self.client.get_html(self.course_setting_url)
135-
start = response.content.decode('utf-8').find("mobile_available")
136-
end = response.content.decode('utf-8').find("}", start)
137-
settings_fields = json.loads(response.content.decode('utf-8')[start + len("mobile_available: "):end + 1])
132+
response = self.client.get(self.course_setting_url, HTTP_ACCEPT='application/json')
133+
data = json.loads(response.content.decode('utf-8'))
134+
settings_fields = data.get('mobile_available')
138135

139136
self.assertEqual(settings_fields["display_name"], "Mobile Course Available") # noqa: PT009
140137
self.assertEqual(settings_fields["deprecated"], True) # noqa: PT009
@@ -146,7 +143,6 @@ def test_mobile_field_available(self):
146143
(False, True, True)
147144
)
148145
@ddt.unpack
149-
@override_waffle_flag(toggles.LEGACY_STUDIO_ADVANCED_SETTINGS, True)
150146
def test_discussion_fields_available(self, is_pages_and_resources_enabled,
151147
is_legacy_discussion_setting_enabled, fields_visible):
152148
"""
@@ -155,11 +151,27 @@ def test_discussion_fields_available(self, is_pages_and_resources_enabled,
155151

156152
with override_waffle_flag(ENABLE_PAGES_AND_RESOURCES_MICROFRONTEND, is_pages_and_resources_enabled):
157153
with override_waffle_flag(OVERRIDE_DISCUSSION_LEGACY_SETTINGS_FLAG, is_legacy_discussion_setting_enabled):
158-
response = self.client.get_html(self.course_setting_url).content.decode('utf-8')
159-
self.assertEqual('allow_anonymous' in response, fields_visible) # noqa: PT009
160-
self.assertEqual('allow_anonymous_to_peers' in response, fields_visible) # noqa: PT009
161-
self.assertEqual('discussion_blackouts' in response, fields_visible) # noqa: PT009
162-
self.assertEqual('discussion_topics' in response, fields_visible) # noqa: PT009
154+
response = self.client.get(self.course_setting_url, HTTP_ACCEPT='application/json')
155+
data = json.loads(response.content.decode('utf-8'))
156+
self.assertEqual('allow_anonymous' in data, fields_visible) # noqa: PT009
157+
self.assertEqual('allow_anonymous_to_peers' in data, fields_visible) # noqa: PT009
158+
self.assertEqual('discussion_blackouts' in data, fields_visible) # noqa: PT009
159+
self.assertEqual('discussion_topics' in data, fields_visible) # noqa: PT009
160+
161+
@ddt.data(False, True)
162+
def test_disable_advanced_settings_feature(self, disable_advanced_settings):
163+
"""
164+
When DISABLE_ADVANCED_SETTINGS is enabled, non-staff users should receive
165+
a 403 on the advanced settings URL; staff users should always be redirected.
166+
"""
167+
with override_settings(FEATURES={
168+
'DISABLE_ADVANCED_SETTINGS': disable_advanced_settings,
169+
}, COURSE_AUTHORING_MICROFRONTEND_URL='https://mfe.example'):
170+
response = self.non_staff_client.get_html(self.course_setting_url)
171+
self.assertEqual(response.status_code, 403 if disable_advanced_settings else 302) # noqa: PT009
172+
173+
response = self.client.get_html(self.course_setting_url)
174+
self.assertEqual(response.status_code, 302) # noqa: PT009
163175

164176
def test_grading_handler_redirects_to_mfe(self):
165177
"""grading_handler redirects to the authoring MFE."""

cms/djangoapps/contentstore/tests/tests.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
This test file will test registration, login, activation, and session activity timeouts
33
44
TODO: Rewrite several of these assertions so that they check the output of the REST or Python
5-
APIs rather than parsing HTML from the deprecated legacy frontend pages. In particular, any
6-
test case using override_waffle_flag(toggles.LEGACY_STUDIO_*, True) will need to be fixed.
7-
Part of https://github.com/openedx/edx-platform/issues/36275.
5+
APIs rather than parsing HTML from the deprecated legacy frontend pages.
86
"""
97

108

@@ -17,10 +15,8 @@
1715
from django.core.cache import cache
1816
from django.test.utils import override_settings
1917
from django.urls import reverse
20-
from edx_toggles.toggles.testutils import override_waffle_flag
2118
from pytz import UTC
2219

23-
from cms.djangoapps.contentstore import toggles
2420
from cms.djangoapps.contentstore.tests.test_course_settings import CourseTestCase
2521
from cms.djangoapps.contentstore.tests.utils import AjaxEnabledTestClient, parse_json, registration, user
2622
from cms.djangoapps.contentstore.utils import get_studio_home_url
@@ -237,20 +233,19 @@ def setUp(self):
237233
super().setUp()
238234
self.course = CourseFactory.create(org='edX', number='test_course_key', display_name='Test Course')
239235

240-
@data(('edX/test_course_key/Test_Course', 200), ('garbage:edX+test_course_key+Test_Course', 404))
236+
@data(('edX/test_course_key/Test_Course', 302, 200), ('garbage:edX+test_course_key+Test_Course', 404, 404))
241237
@unpack
242-
@override_waffle_flag(toggles.LEGACY_STUDIO_IMPORT, True)
243-
def test_course_key_decorator(self, course_key, status_code):
238+
def test_course_key_decorator(self, course_key, import_status_code, import_status_handler_code):
244239
"""
245240
Tests for the ensure_valid_course_key decorator.
246241
"""
247242
url = f'/import/{course_key}'
248243
resp = self.client.get_html(url)
249-
self.assertEqual(resp.status_code, status_code) # noqa: PT009
244+
self.assertEqual(resp.status_code, import_status_code) # noqa: PT009
250245

251246
url = '/import_status/{course_key}/{filename}'.format(
252247
course_key=course_key,
253248
filename='xyz.tar.gz'
254249
)
255250
resp = self.client.get_html(url)
256-
self.assertEqual(resp.status_code, status_code) # noqa: PT009
251+
self.assertEqual(resp.status_code, import_status_handler_code) # noqa: PT009

cms/djangoapps/contentstore/toggles.py

Lines changed: 0 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -159,64 +159,6 @@ def use_react_markdown_editor(course_key):
159159
return ENABLE_REACT_MARKDOWN_EDITOR.is_enabled(course_key)
160160

161161

162-
# .. toggle_name: legacy_studio.advanced_settings
163-
# .. toggle_implementation: WaffleFlag
164-
# .. toggle_default: False
165-
# .. toggle_description: Temporarily fall back to the old Studio Advanced Settings page.
166-
# .. toggle_use_cases: temporary
167-
# .. toggle_creation_date: 2025-03-14
168-
# .. toggle_target_removal_date: 2025-09-14
169-
# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275
170-
# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available.
171-
LEGACY_STUDIO_ADVANCED_SETTINGS = CourseWaffleFlag('legacy_studio.advanced_settings', __name__)
172-
173-
174-
def use_new_advanced_settings_page(course_key):
175-
"""
176-
Returns a boolean if new studio advanced settings pafe mfe is enabled
177-
"""
178-
return not LEGACY_STUDIO_ADVANCED_SETTINGS.is_enabled(course_key)
179-
180-
181-
182-
# .. toggle_name: legacy_studio.import
183-
# .. toggle_implementation: WaffleFlag
184-
# .. toggle_default: False
185-
# .. toggle_description: Temporarily fall back to the old Course Import page.
186-
# .. toggle_use_cases: temporary
187-
# .. toggle_creation_date: 2025-03-14
188-
# .. toggle_target_removal_date: 2025-09-14
189-
# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275
190-
# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available.
191-
LEGACY_STUDIO_IMPORT = CourseWaffleFlag('legacy_studio.import', __name__)
192-
193-
194-
def use_new_import_page(course_key):
195-
"""
196-
Returns a boolean if new studio import mfe is enabled
197-
"""
198-
return not LEGACY_STUDIO_IMPORT.is_enabled(course_key)
199-
200-
201-
# .. toggle_name: legacy_studio.export
202-
# .. toggle_implementation: WaffleFlag
203-
# .. toggle_default: False
204-
# .. toggle_description: Temporarily fall back to the old Course Export page.
205-
# .. toggle_use_cases: temporary
206-
# .. toggle_creation_date: 2025-03-14
207-
# .. toggle_target_removal_date: 2025-09-14
208-
# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275
209-
# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available.
210-
LEGACY_STUDIO_EXPORT = CourseWaffleFlag('legacy_studio.export', __name__)
211-
212-
213-
def use_new_export_page(course_key):
214-
"""
215-
Returns a boolean if new studio export mfe is enabled
216-
"""
217-
return not LEGACY_STUDIO_EXPORT.is_enabled(course_key)
218-
219-
220162
# .. toggle_name: contentstore.new_studio_mfe.use_new_video_uploads_page
221163
# .. toggle_implementation: CourseWaffleFlag
222164
# .. toggle_default: False
@@ -271,27 +213,6 @@ def use_new_unit_page(course_key):
271213
return not LEGACY_STUDIO_UNIT_EDITOR.is_enabled(course_key)
272214

273215

274-
275-
276-
# .. toggle_name: legacy_studio.configurations
277-
# .. toggle_implementation: WaffleFlag
278-
# .. toggle_default: False
279-
# .. toggle_description: Temporarily fall back to the old Studio Configurations page.
280-
# .. toggle_use_cases: temporary
281-
# .. toggle_creation_date: 2025-03-14
282-
# .. toggle_target_removal_date: 2025-09-14
283-
# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275
284-
# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available.
285-
LEGACY_STUDIO_CONFIGURATIONS = CourseWaffleFlag('legacy_studio.configurations', __name__)
286-
287-
288-
def use_new_group_configurations_page(course_key):
289-
"""
290-
Returns a boolean if new studio group configurations mfe is enabled
291-
"""
292-
return not LEGACY_STUDIO_CONFIGURATIONS.is_enabled(course_key)
293-
294-
295216
# .. toggle_name: contentstore.mock_video_uploads
296217
# .. toggle_implementation: WaffleFlag
297218
# .. toggle_default: False

0 commit comments

Comments
 (0)