Skip to content

Commit c2d65c9

Browse files
authored
Merge pull request #37462 from openedx/feanil/drop_course_outline
feat!: Drop the legacy course_outline page.
2 parents 91010ab + 83cfa1d commit c2d65c9

10 files changed

Lines changed: 18 additions & 537 deletions

File tree

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,12 @@ def get_use_new_video_uploads_page(self, obj):
116116
def get_use_new_course_outline_page(self, obj):
117117
"""
118118
Method to get the use_new_course_outline_page switch
119+
120+
Always true, because the switch is being removed and the new experience
121+
should always be on. This function will be removed in
122+
https://github.com/openedx/edx-platform/issues/37497
119123
"""
120-
course_key = self.get_course_key()
121-
return toggles.use_new_course_outline_page(course_key)
124+
return True
122125

123126
def get_use_new_unit_page(self, obj):
124127
"""

cms/djangoapps/contentstore/tests/test_contentstore.py

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,33 +1399,6 @@ def test_item_factory(self):
13991399
item = BlockFactory.create(parent_location=course.location)
14001400
self.assertIsInstance(item, SequenceBlock)
14011401

1402-
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_OUTLINE, True)
1403-
def test_course_overview_view_with_course(self):
1404-
"""Test viewing the course overview page with an existing course"""
1405-
course = CourseFactory.create()
1406-
resp = self._show_course_overview(course.id)
1407-
1408-
# course_handler raise 404 for old mongo course
1409-
if course.id.deprecated:
1410-
self.assertEqual(resp.status_code, 404)
1411-
return
1412-
1413-
assets_url = reverse_course_url(
1414-
'assets_handler',
1415-
course.location.course_key
1416-
)
1417-
1418-
self.assertContains(
1419-
resp,
1420-
'<article class="outline outline-complex outline-course" data-locator="{locator}" data-course-key="{course_key}" data-course-assets="{assets_url}" >'.format( # lint-amnesty, pylint: disable=line-too-long
1421-
locator=str(course.location),
1422-
course_key=str(course.id),
1423-
assets_url=assets_url,
1424-
),
1425-
status_code=200,
1426-
html=True
1427-
)
1428-
14291402
def test_create_block(self):
14301403
"""Test creating a new xblock instance."""
14311404
course = CourseFactory.create()
@@ -1499,8 +1472,7 @@ def test_get_html(handler):
14991472
)
15001473
course_key = course_items[0].id
15011474

1502-
with override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_OUTLINE, True):
1503-
resp = self._show_course_overview(course_key)
1475+
resp = self._show_course_overview(course_key)
15041476

15051477
# course_handler raise 404 for old mongo course
15061478
if course_key.deprecated:
@@ -1744,7 +1716,8 @@ def _show_course_overview(self, course_key):
17441716
"""
17451717
Show the course overview page.
17461718
"""
1747-
resp = self.client.get_html(get_url('course_handler', course_key, 'course_key_string'))
1719+
resp = self.client.get(get_url('course_handler', course_key, 'course_key_string'),
1720+
content_type='application/json')
17481721
return resp
17491722

17501723
def test_wiki_slug(self):

cms/djangoapps/contentstore/toggles.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -364,13 +364,6 @@ def use_new_video_uploads_page(course_key):
364364
LEGACY_STUDIO_COURSE_OUTLINE = CourseWaffleFlag('legacy_studio.course_outline', __name__)
365365

366366

367-
def use_new_course_outline_page(course_key):
368-
"""
369-
Returns a boolean if new studio course outline mfe is enabled
370-
"""
371-
return not LEGACY_STUDIO_COURSE_OUTLINE.is_enabled(course_key)
372-
373-
374367
# .. toggle_name: legacy_studio.unit_editor
375368
# .. toggle_implementation: WaffleFlag
376369
# .. toggle_default: False

cms/djangoapps/contentstore/utils.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
split_library_view_on_dashboard,
4444
use_new_advanced_settings_page,
4545
use_new_certificates_page,
46-
use_new_course_outline_page,
4746
use_new_course_team_page,
4847
use_new_custom_pages,
4948
use_new_export_page,
@@ -443,13 +442,12 @@ def get_course_outline_url(course_locator, block_to_show=None) -> str:
443442
Gets course authoring microfrontend URL for course oultine page view.
444443
"""
445444
course_outline_url = None
446-
if use_new_course_outline_page(course_locator):
447-
mfe_base_url = get_course_authoring_url(course_locator)
448-
course_mfe_url = f'{mfe_base_url}/course/{course_locator}'
449-
if block_to_show:
450-
course_mfe_url += f'?show={quote_plus(block_to_show)}'
451-
if mfe_base_url:
452-
course_outline_url = course_mfe_url
445+
mfe_base_url = get_course_authoring_url(course_locator)
446+
course_mfe_url = f'{mfe_base_url}/course/{course_locator}'
447+
if block_to_show:
448+
course_mfe_url += f'?show={quote_plus(block_to_show)}'
449+
if mfe_base_url:
450+
course_outline_url = course_mfe_url
453451
return course_outline_url
454452

455453

cms/djangoapps/contentstore/views/course.py

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@
9090
from ..tasks import rerun_course as rerun_course_task
9191
from ..toggles import (
9292
default_enable_flexible_peer_openassessments,
93-
use_new_course_outline_page,
9493
use_new_updates_page,
9594
use_new_advanced_settings_page,
9695
use_new_grading_page,
@@ -102,7 +101,6 @@
102101
add_instructor,
103102
get_advanced_settings_url,
104103
get_course_grading,
105-
get_course_index_context,
106104
get_course_outline_url,
107105
get_course_rerun_context,
108106
get_course_settings,
@@ -740,18 +738,8 @@ def course_index(request, course_key):
740738
741739
org, course, name: Attributes of the Location for the item to edit
742740
"""
743-
if use_new_course_outline_page(course_key):
744-
block_to_show = request.GET.get("show")
745-
return redirect(get_course_outline_url(course_key, block_to_show))
746-
with modulestore().bulk_operations(course_key):
747-
# A depth of None implies the whole course. The course outline needs this in order to compute has_changes.
748-
# A unit may not have a draft version, but one of its components could, and hence the unit itself has changes.
749-
course_block = get_course_and_check_access(course_key, request.user, depth=None)
750-
if not course_block:
751-
raise Http404
752-
# should be under bulk_operations if course_block is passed
753-
course_index_context = get_course_index_context(request, course_key, course_block)
754-
return render_to_response('course_outline.html', course_index_context)
741+
block_to_show = request.GET.get("show")
742+
return redirect(get_course_outline_url(course_key, block_to_show))
755743

756744

757745
@function_trace('get_courses_accessible_to_user')

cms/djangoapps/contentstore/views/tests/test_course_index.py

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,12 @@
1010
import ddt
1111
import pytz
1212
from django.core.exceptions import PermissionDenied
13-
from django.test.utils import override_settings
1413
from django.utils.translation import gettext as _
15-
from edx_toggles.toggles.testutils import override_waffle_flag
1614
from search.api import perform_search
1715

18-
from cms.djangoapps.contentstore import toggles
1916
from cms.djangoapps.contentstore.courseware_index import CoursewareSearchIndexer, SearchIndexingError
2017
from cms.djangoapps.contentstore.tests.utils import CourseTestCase
2118
from cms.djangoapps.contentstore.utils import (
22-
get_proctored_exam_settings_url,
2319
reverse_course_url,
2420
reverse_usage_url
2521
)
@@ -34,7 +30,6 @@
3430
from cms.djangoapps.contentstore.xblock_storage_handlers.view_handlers import VisibilityState, create_xblock_info
3531

3632

37-
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_OUTLINE, True)
3833
@ddt.ddt
3934
class TestCourseOutline(CourseTestCase):
4035
"""
@@ -226,38 +221,15 @@ def test_verify_warn_only_on_enabled_blocks(self, enabled_block_types, deprecate
226221
expected_block_types
227222
)
228223

229-
@override_settings(FEATURES={'ENABLE_EXAM_SETTINGS_HTML_VIEW': True})
230-
@mock.patch('cms.djangoapps.models.settings.course_metadata.CourseMetadata.validate_proctoring_settings')
231-
def test_proctoring_link_is_visible(self, mock_validate_proctoring_settings):
232-
"""
233-
Test to check proctored exam settings mfe url is rendering properly
234-
"""
235-
mock_validate_proctoring_settings.return_value = [
236-
{
237-
'key': 'proctoring_provider',
238-
'message': 'error message',
239-
'model': {'display_name': 'proctoring_provider'}
240-
},
241-
{
242-
'key': 'proctoring_provider',
243-
'message': 'error message',
244-
'model': {'display_name': 'proctoring_provider'}
245-
}
246-
]
247-
response = self.client.get_html(reverse_course_url('course_handler', self.course.id))
248-
proctored_exam_settings_url = get_proctored_exam_settings_url(self.course.id)
249-
self.assertContains(response, proctored_exam_settings_url, 2)
250-
251224
def test_number_of_calls_to_db(self):
252225
"""
253226
Test to check number of queries made to mysql and mongo
254227
"""
255-
with self.assertNumQueries(39, table_ignorelist=WAFFLE_TABLES):
228+
with self.assertNumQueries(21, table_ignorelist=WAFFLE_TABLES):
256229
with check_mongo_calls(3):
257-
self.client.get_html(reverse_course_url('course_handler', self.course.id))
230+
self.client.get(reverse_course_url('course_handler', self.course.id), content_type="application/json")
258231

259232

260-
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_OUTLINE, True)
261233
class TestCourseReIndex(CourseTestCase):
262234
"""
263235
Unit tests for the course outline.

cms/djangoapps/contentstore/views/tests/test_exam_settings_view.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
"ENABLE_PROCTORED_EXAMS": True,
2525
},
2626
)
27-
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_OUTLINE, True)
2827
@override_waffle_flag(toggles.LEGACY_STUDIO_CERTIFICATES, True)
2928
@override_waffle_flag(toggles.LEGACY_STUDIO_SCHEDULE_DETAILS, True)
3029
@override_waffle_flag(toggles.LEGACY_STUDIO_CONFIGURATIONS, True)
@@ -93,7 +92,6 @@ def test_view_with_exam_settings_enabled(self, handler):
9392
)
9493
@ddt.data(
9594
"advanced_settings_handler",
96-
"course_handler",
9795
)
9896
def test_exam_settings_alert_with_exam_settings_enabled(self, page_handler):
9997
"""
@@ -130,7 +128,6 @@ def test_exam_settings_alert_with_exam_settings_enabled(self, page_handler):
130128
)
131129
@ddt.data(
132130
"advanced_settings_handler",
133-
"course_handler",
134131
)
135132
@override_waffle_flag(toggles.LEGACY_STUDIO_EXAM_SETTINGS, True)
136133
def test_exam_settings_alert_with_exam_settings_disabled(self, page_handler):
@@ -173,7 +170,6 @@ def test_exam_settings_alert_with_exam_settings_disabled(self, page_handler):
173170
)
174171
@ddt.data(
175172
"advanced_settings_handler",
176-
"course_handler",
177173
)
178174
def test_invalid_provider_alert(self, page_handler):
179175
"""
@@ -198,7 +194,6 @@ def test_invalid_provider_alert(self, page_handler):
198194

199195
@ddt.data(
200196
"advanced_settings_handler",
201-
"course_handler",
202197
)
203198
def test_exam_settings_alert_not_shown(self, page_handler):
204199
"""

cms/djangoapps/contentstore/views/tests/test_header_menu.py

Lines changed: 0 additions & 93 deletions
This file was deleted.

0 commit comments

Comments
 (0)