Skip to content

Commit fcfa413

Browse files
committed
feat!: Drop the legacy files and uplades page.
The assets page and related tests and settings flags will be removed. They have been replaced with a new implementation in the frontend-app-authoring MFE. BREAKING CHANGE: The legacy_studio.files_uploads flag has been removed and will no longer allow operators to fall back to the legacy files and uploads view. The new MFE version is now the only available veiew.
1 parent c2d65c9 commit fcfa413

9 files changed

Lines changed: 11 additions & 120 deletions

File tree

cms/djangoapps/contentstore/asset_storage_handlers.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from opaque_keys.edx.keys import AssetKey, CourseKey
2020
from pymongo import ASCENDING, DESCENDING
2121

22-
from common.djangoapps.edxmako.shortcuts import render_to_response
2322
from common.djangoapps.student.auth import has_course_author_access
2423
from common.djangoapps.util.date_utils import get_default_time_display
2524
from common.djangoapps.util.json_request import JsonResponse
@@ -34,8 +33,7 @@
3433
from xmodule.modulestore.exceptions import ItemNotFoundError # lint-amnesty, pylint: disable=wrong-import-order
3534

3635
from .exceptions import AssetNotFoundException, AssetSizeTooLargeException
37-
from .utils import reverse_course_url, get_files_uploads_url, get_response_format, request_response_format_is_json
38-
from .toggles import use_new_files_uploads_page
36+
from .utils import get_files_uploads_url, get_response_format, request_response_format_is_json
3937

4038

4139
REQUEST_DEFAULTS = {
@@ -169,22 +167,8 @@ def _get_asset_usage_path(course_key, assets):
169167
def _asset_index(request, course_key):
170168
'''
171169
Display an editable asset library.
172-
173-
Supports start (0-based index into the list of assets) and max query parameters.
174170
'''
175-
course_block = modulestore().get_course(course_key)
176-
177-
if use_new_files_uploads_page(course_key):
178-
return redirect(get_files_uploads_url(course_key))
179-
180-
return render_to_response('asset_index.html', {
181-
'language_code': request.LANGUAGE_CODE,
182-
'context_course': course_block,
183-
'max_file_size_in_mbs': settings.MAX_ASSET_UPLOAD_FILE_SIZE_IN_MB,
184-
'chunk_size_in_mbs': settings.UPLOAD_CHUNK_SIZE_IN_MB,
185-
'max_file_size_redirect_url': settings.MAX_ASSET_UPLOAD_FILE_SIZE_URL,
186-
'asset_callback_url': reverse_course_url('assets_handler', course_key)
187-
})
171+
return redirect(get_files_uploads_url(course_key))
188172

189173

190174
def _assets_json(request, course_key):

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,11 @@ def get_use_new_export_page(self, obj):
102102
def get_use_new_files_uploads_page(self, obj):
103103
"""
104104
Method to get the use_new_files_uploads_page switch
105+
106+
Always true, because the switch is being removed an the new experience
107+
should alawys be on.
105108
"""
106-
course_key = self.get_course_key()
107-
return toggles.use_new_files_uploads_page(course_key)
109+
return True
108110

109111
def get_use_new_video_uploads_page(self, obj):
110112
"""

cms/djangoapps/contentstore/tests/test_contentstore.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1491,8 +1491,6 @@ def test_get_html(handler):
14911491
test_get_html('course_team_handler')
14921492
with override_waffle_flag(toggles.LEGACY_STUDIO_UPDATES, True):
14931493
test_get_html('course_info_handler')
1494-
with override_waffle_flag(toggles.LEGACY_STUDIO_FILES_UPLOADS, True):
1495-
test_get_html('assets_handler')
14961494
with override_waffle_flag(toggles.LEGACY_STUDIO_CUSTOM_PAGES, True):
14971495
test_get_html('tabs_handler')
14981496
with override_waffle_flag(toggles.LEGACY_STUDIO_SCHEDULE_DETAILS, True):

cms/djangoapps/contentstore/tests/test_course_settings.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ def test_discussion_fields_available(self, is_pages_and_resources_enabled,
168168
@override_waffle_flag(toggles.LEGACY_STUDIO_EXPORT, True)
169169
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_TEAM, True)
170170
@override_waffle_flag(toggles.LEGACY_STUDIO_UPDATES, True)
171-
@override_waffle_flag(toggles.LEGACY_STUDIO_FILES_UPLOADS, True)
172171
@override_waffle_flag(toggles.LEGACY_STUDIO_CUSTOM_PAGES, True)
173172
@override_waffle_flag(toggles.LEGACY_STUDIO_SCHEDULE_DETAILS, True)
174173
@override_waffle_flag(toggles.LEGACY_STUDIO_GRADING, True)
@@ -188,7 +187,6 @@ def test_disable_advanced_settings_feature(self, disable_advanced_settings):
188187
'export_handler',
189188
'course_team_handler',
190189
'course_info_handler',
191-
'assets_handler',
192190
'tabs_handler',
193191
'settings_handler',
194192
'grading_handler',

cms/djangoapps/contentstore/toggles.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -313,25 +313,6 @@ def use_new_export_page(course_key):
313313
return not LEGACY_STUDIO_EXPORT.is_enabled(course_key)
314314

315315

316-
# .. toggle_name: legacy_studio.files_uploads
317-
# .. toggle_implementation: WaffleFlag
318-
# .. toggle_default: False
319-
# .. toggle_description: Temporarily fall back to the old Studio Files & Uploads page.
320-
# .. toggle_use_cases: temporary
321-
# .. toggle_creation_date: 2025-03-14
322-
# .. toggle_target_removal_date: 2025-09-14
323-
# .. toggle_tickets: https://github.com/openedx/edx-platform/issues/36275
324-
# .. toggle_warning: In Ulmo, this toggle will be removed. Only the new (React-based) experience will be available.
325-
LEGACY_STUDIO_FILES_UPLOADS = CourseWaffleFlag('legacy_studio.files_uploads', __name__)
326-
327-
328-
def use_new_files_uploads_page(course_key):
329-
"""
330-
Returns a boolean if new studio files and uploads mfe is enabled
331-
"""
332-
return not LEGACY_STUDIO_FILES_UPLOADS.is_enabled(course_key)
333-
334-
335316
# .. toggle_name: contentstore.new_studio_mfe.use_new_video_uploads_page
336317
# .. toggle_implementation: CourseWaffleFlag
337318
# .. toggle_default: False

cms/djangoapps/contentstore/utils.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
use_new_course_team_page,
4747
use_new_custom_pages,
4848
use_new_export_page,
49-
use_new_files_uploads_page,
5049
use_new_grading_page,
5150
use_new_group_configurations_page,
5251
use_new_import_page,
@@ -416,11 +415,10 @@ def get_files_uploads_url(course_locator) -> str:
416415
Gets course authoring microfrontend URL for files and uploads page view.
417416
"""
418417
files_uploads_url = None
419-
if use_new_files_uploads_page(course_locator):
420-
mfe_base_url = get_course_authoring_url(course_locator)
421-
course_mfe_url = f'{mfe_base_url}/course/{course_locator}/assets'
422-
if mfe_base_url:
423-
files_uploads_url = course_mfe_url
418+
mfe_base_url = get_course_authoring_url(course_locator)
419+
course_mfe_url = f'{mfe_base_url}/course/{course_locator}/assets'
420+
if mfe_base_url:
421+
files_uploads_url = course_mfe_url
424422
return files_uploads_url
425423

426424

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,11 @@
1212
from ddt import data, ddt
1313
from django.conf import settings
1414
from django.test.utils import override_settings
15-
from edx_toggles.toggles.testutils import override_waffle_flag
1615
from opaque_keys.edx.keys import AssetKey
1716
from opaque_keys.edx.locator import CourseLocator
1817
from PIL import Image
1918
from pytz import UTC
2019

21-
from cms.djangoapps.contentstore import toggles
2220
from cms.djangoapps.contentstore.tests.utils import CourseTestCase
2321
from cms.djangoapps.contentstore.utils import reverse_course_url
2422
from cms.djangoapps.contentstore.views import assets
@@ -87,10 +85,9 @@ class BasicAssetsTestCase(AssetsTestCase):
8785
Test getting assets via html w/o additional args
8886
"""
8987

90-
@override_waffle_flag(toggles.LEGACY_STUDIO_FILES_UPLOADS, True)
9188
def test_basic(self):
9289
resp = self.client.get(self.url, HTTP_ACCEPT='text/html')
93-
self.assertEqual(resp.status_code, 200)
90+
self.assertEqual(resp.status_code, 302)
9491

9592
def test_static_url_generation(self):
9693

cms/templates/asset_index.html

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

cms/templates/widgets/header.html

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ <h1 class="branding">
4747
checklists_url = reverse('checklists_handler', kwargs={'course_key_string': str(course_key)})
4848
pages_and_resources_mfe_enabled = ENABLE_PAGES_AND_RESOURCES_MICROFRONTEND.is_enabled(context_course.id)
4949
updates_mfe_enabled = toggles.use_new_updates_page(context_course.id)
50-
files_uploads_mfe_enabled = toggles.use_new_files_uploads_page(context_course.id)
5150
video_upload_mfe_enabled = toggles.use_new_video_uploads_page(context_course.id)
5251
schedule_details_mfe_enabled = toggles.use_new_schedule_details_page(context_course.id)
5352
grading_mfe_enabled = toggles.use_new_grading_page(context_course.id)
@@ -104,16 +103,9 @@ <h3 class="title"><span class="label"><span class="label-prefix sr">${_("Course"
104103
<a href="${get_pages_and_resources_url(course_key)}">${_("Pages & Resources")}</a>
105104
</li>
106105
% endif
107-
%if not files_uploads_mfe_enabled:
108-
<li class="nav-item nav-course-courseware-uploads">
109-
<a href="${assets_url}">${_("Files")}</a>
110-
</li>
111-
%endif
112-
%if files_uploads_mfe_enabled:
113106
<li class="nav-item nav-course-courseware-uploads">
114107
<a href="${get_files_uploads_url(course_key)}">${_("Files")}</a>
115108
</li>
116-
%endif
117109
% if not pages_and_resources_mfe_enabled:
118110
<li class="nav-item nav-course-courseware-textbooks">
119111
<a href="${textbooks_url}">${_("Textbooks")}</a>

0 commit comments

Comments
 (0)