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 @@ -80,10 +80,15 @@ def get_use_new_grading_page(self, obj):

def get_use_new_updates_page(self, obj):
"""
Method to get the use_new_updates_page switch
Method to indicate if we should use the new updates_page

This used to be based on a waffle flag but the flag is being removed so we
default it to true for now until we can remove the need for it from the consumers
of this serializer and the related APIs.

See https://github.com/openedx/edx-platform/issues/37497
"""
course_key = self.get_course_key()
return toggles.use_new_updates_page(course_key)
return True

def get_use_new_import_page(self, obj):
"""
Expand Down
12 changes: 10 additions & 2 deletions cms/djangoapps/contentstore/tests/test_contentstore.py
Original file line number Diff line number Diff line change
Expand Up @@ -1489,8 +1489,6 @@ def test_get_html(handler):
test_get_html('export_handler')
with override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_TEAM, True):
test_get_html('course_team_handler')
with override_waffle_flag(toggles.LEGACY_STUDIO_UPDATES, True):
test_get_html('course_info_handler')
with override_waffle_flag(toggles.LEGACY_STUDIO_CUSTOM_PAGES, True):
test_get_html('tabs_handler')
with override_waffle_flag(toggles.LEGACY_STUDIO_SCHEDULE_DETAILS, True):
Expand All @@ -1502,6 +1500,16 @@ def test_get_html(handler):
with override_waffle_flag(toggles.LEGACY_STUDIO_TEXTBOOKS, True):
test_get_html('textbooks_list_handler')

# Test that studio updates load
course_updates_url = reverse(
'course_info_update_handler',
kwargs={
'course_key_string': str(course_key),
}
)
resp = self.client.get(course_updates_url)
assert resp.status_code == 200

# go look at the Edit page
unit_key = course_key.make_usage_key('vertical', 'test_vertical')
with override_waffle_flag(toggles.LEGACY_STUDIO_UNIT_EDITOR, True):
Expand Down
2 changes: 0 additions & 2 deletions cms/djangoapps/contentstore/tests/test_course_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,6 @@ def test_discussion_fields_available(self, is_pages_and_resources_enabled,
@override_waffle_flag(toggles.LEGACY_STUDIO_IMPORT, True)
@override_waffle_flag(toggles.LEGACY_STUDIO_EXPORT, True)
@override_waffle_flag(toggles.LEGACY_STUDIO_COURSE_TEAM, True)
@override_waffle_flag(toggles.LEGACY_STUDIO_UPDATES, True)
@override_waffle_flag(toggles.LEGACY_STUDIO_CUSTOM_PAGES, True)
@override_waffle_flag(toggles.LEGACY_STUDIO_SCHEDULE_DETAILS, True)
@override_waffle_flag(toggles.LEGACY_STUDIO_GRADING, True)
Expand All @@ -186,7 +185,6 @@ def test_disable_advanced_settings_feature(self, disable_advanced_settings):
'import_handler',
'export_handler',
'course_team_handler',
'course_info_handler',
'tabs_handler',
'settings_handler',
'grading_handler',
Expand Down
19 changes: 0 additions & 19 deletions cms/djangoapps/contentstore/toggles.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,25 +256,6 @@ def use_new_grading_page(course_key):
return not LEGACY_STUDIO_GRADING.is_enabled(course_key)


# .. toggle_name: legacy_studio.updates
# .. toggle_implementation: WaffleFlag
# .. toggle_default: False
# .. toggle_description: Temporarily fall back to the old Studio Course Updates 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_UPDATES = CourseWaffleFlag('legacy_studio.updates', __name__)


def use_new_updates_page(course_key):
"""
Returns a boolean if new studio updates mfe is enabled
"""
return not LEGACY_STUDIO_UPDATES.is_enabled(course_key)


# .. toggle_name: legacy_studio.import
# .. toggle_implementation: WaffleFlag
# .. toggle_default: False
Expand Down
10 changes: 4 additions & 6 deletions cms/djangoapps/contentstore/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@
use_new_schedule_details_page,
use_new_textbooks_page,
use_new_unit_page,
use_new_updates_page,
use_new_video_uploads_page,
)
from cms.djangoapps.models.settings.course_grading import CourseGradingModel
Expand Down Expand Up @@ -363,11 +362,10 @@ def get_updates_url(course_locator) -> str:
Gets course authoring microfrontend URL for updates page view.
"""
updates_url = None
if use_new_updates_page(course_locator):
mfe_base_url = get_course_authoring_url(course_locator)
course_mfe_url = f'{mfe_base_url}/course/{course_locator}/course_info'
if mfe_base_url:
updates_url = course_mfe_url
mfe_base_url = get_course_authoring_url(course_locator)
course_mfe_url = f'{mfe_base_url}/course/{course_locator}/course_info'
if mfe_base_url:
updates_url = course_mfe_url
return updates_url


Expand Down
21 changes: 1 addition & 20 deletions cms/djangoapps/contentstore/views/course.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@
from openedx.core.djangolib.js_utils import dump_js_escaped_json
from openedx.core.lib.course_tabs import CourseTabPluginManager
from organizations.models import Organization
from xmodule.contentstore.content import StaticContent # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.course_block import CourseBlock, CourseFields # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.error_block import ErrorBlock # lint-amnesty, pylint: disable=wrong-import-order
from xmodule.modulestore import EdxJSONEncoder # lint-amnesty, pylint: disable=wrong-import-order
Expand All @@ -90,7 +89,6 @@
from ..tasks import rerun_course as rerun_course_task
from ..toggles import (
default_enable_flexible_peer_openassessments,
use_new_updates_page,
use_new_advanced_settings_page,
use_new_grading_page,
use_new_textbooks_page,
Expand Down Expand Up @@ -1066,24 +1064,7 @@ def course_info_handler(request, course_key_string):
except InvalidKeyError:
raise Http404 # lint-amnesty, pylint: disable=raise-missing-from

with modulestore().bulk_operations(course_key):
course_block = get_course_and_check_access(course_key, request.user)
if not course_block:
raise Http404
if use_new_updates_page(course_key):
return redirect(get_updates_url(course_key))
if 'text/html' in request.META.get('HTTP_ACCEPT', 'text/html'):
return render_to_response(
'course_info.html',
{
'context_course': course_block,
'updates_url': reverse_course_url('course_info_update_handler', course_key),
'handouts_locator': course_key.make_usage_key('course_info', 'handouts'),
'base_asset_url': StaticContent.get_base_url_path_for_course_assets(course_block.id),
}
)
else:
return HttpResponseBadRequest("Only supports html requests")
return redirect(get_updates_url(course_key))


@login_required
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@

import json
from opaque_keys.edx.keys import UsageKey
from edx_toggles.toggles.testutils import override_waffle_flag

from cms.djangoapps.contentstore import toggles
from cms.djangoapps.contentstore.tests.test_course_settings import CourseTestCase
from cms.djangoapps.contentstore.utils import reverse_course_url, reverse_usage_url
from openedx.core.lib.xblock_utils import get_course_update_items
Expand All @@ -23,7 +21,6 @@ def create_update_url(self, provided_id=None, course_key=None):
return reverse_course_url('course_info_update_handler', course_key, kwargs=kwargs)

# The do all and end all of unit test cases.
@override_waffle_flag(toggles.LEGACY_STUDIO_UPDATES, True)
def test_course_update(self):
"""Go through each interface and ensure it works."""
def get_response(content, date):
Expand All @@ -40,11 +37,6 @@ def get_response(content, date):

return json.loads(resp.content.decode('utf-8'))

resp = self.client.get_html(
reverse_course_url('course_info_handler', self.course.id)
)
self.assertContains(resp, 'Course Updates', status_code=200)

init_content = '<iframe width="560" height="315" src="http://www.youtube.com/embed/RocY-Jd93XU" frameborder="0">' # lint-amnesty, pylint: disable=line-too-long
content = init_content + '</iframe>'
payload = get_response(content, 'January 8, 2013')
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 @@ -20,7 +20,6 @@
'js/factories/asset_index',
'js/factories/base',
'js/factories/course_create_rerun',
'js/factories/course_info',
'js/factories/export',
'js/factories/group_configurations',
'js/certificates/factories/certificates_page_factory',
Expand Down
1 change: 0 additions & 1 deletion cms/static/cms/js/spec/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,6 @@
'js/spec/models/settings_grading_spec',
'js/spec/models/textbook_spec',
'js/spec/models/upload_spec',
'js/spec/views/course_info_spec',
'js/spec/views/metadata_edit_spec',
'js/spec/views/textbook_spec',
'js/spec/views/upload_spec',
Expand Down
12 changes: 0 additions & 12 deletions cms/static/js/collections/course_update.js

This file was deleted.

26 changes: 0 additions & 26 deletions cms/static/js/factories/course_info.js

This file was deleted.

13 changes: 0 additions & 13 deletions cms/static/js/models/course_info.js

This file was deleted.

Loading
Loading