From d8fb768684daf8d534c256b10765fd05e71aacb7 Mon Sep 17 00:00:00 2001 From: Adeel Khan Date: Tue, 11 Feb 2020 16:31:20 +0500 Subject: [PATCH] Using Feature flag to disable Mobile Course Available UI This patch would disable Mobile Course Available UI field in studio's advanced settings based on DISABLE_MOBILE_COURSE_AVAILABLE flag.. PROD-1243 --- .../tests/test_course_settings.py | 27 +++++++++++++++++++ cms/djangoapps/contentstore/views/course.py | 8 +++++- cms/envs/common.py | 1 + lms/envs/common.py | 1 + 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/cms/djangoapps/contentstore/tests/test_course_settings.py b/cms/djangoapps/contentstore/tests/test_course_settings.py index dc04302721..3d434ef93e 100644 --- a/cms/djangoapps/contentstore/tests/test_course_settings.py +++ b/cms/djangoapps/contentstore/tests/test_course_settings.py @@ -91,6 +91,33 @@ class CourseSettingsEncoderTest(CourseTestCase): self.assertEqual(jsondetails['string'], 'string') +class CourseAdvanceSettingViewTest(CourseTestCase, MilestonesTestCaseMixin): + """ + Tests for AdvanceSettings View. + """ + + def setUp(self): + super(CourseAdvanceSettingViewTest, self).setUp() + self.fullcourse = CourseFactory.create() + self.course_setting_url = get_url(self.course.id, 'advanced_settings_handler') + + @override_settings(FEATURES={'DISABLE_MOBILE_COURSE_AVAILABLE': True}) + def test_mobile_field_available(self): + + """ + Test to check `Mobile Course Available` field is not viewable in Studio + when DISABLE_MOBILE_COURSE_AVAILABLE is true. + """ + + response = self.client.get_html(self.course_setting_url) + start = response.content.decode('utf-8').find("mobile_available") + end = response.content.decode('utf-8').find("}", start) + settings_fields = json.loads(response.content.decode('utf-8')[start + len("mobile_available: "):end + 1]) + + self.assertEqual(settings_fields["display_name"], "Mobile Course Available") + self.assertEqual(settings_fields["deprecated"], True) + + @ddt.ddt class CourseDetailsViewTest(CourseTestCase, MilestonesTestCaseMixin): """ diff --git a/cms/djangoapps/contentstore/views/course.py b/cms/djangoapps/contentstore/views/course.py index 26732dd1be..3effe650e7 100644 --- a/cms/djangoapps/contentstore/views/course.py +++ b/cms/djangoapps/contentstore/views/course.py @@ -103,6 +103,7 @@ from .library import LIBRARIES_ENABLED, get_library_creator_status log = logging.getLogger(__name__) + __all__ = ['course_info_handler', 'course_handler', 'course_listing', 'course_info_update_handler', 'course_search_index_handler', 'course_rerun_handler', @@ -1312,6 +1313,11 @@ def advanced_settings_handler(request, course_key_string): course_key = CourseKey.from_string(course_key_string) with modulestore().bulk_operations(course_key): course_module = get_course_and_check_access(course_key, request.user) + + advanced_dict = CourseMetadata.fetch(course_module) + if settings.FEATURES.get('DISABLE_MOBILE_COURSE_AVAILABLE', False): + advanced_dict.get('mobile_available')['deprecated'] = True + if 'text/html' in request.META.get('HTTP_ACCEPT', '') and request.method == 'GET': publisher_enabled = configuration_helpers.get_value_for_org( course_module.location.org, @@ -1321,7 +1327,7 @@ def advanced_settings_handler(request, course_key_string): return render_to_response('settings_advanced.html', { 'context_course': course_module, - 'advanced_dict': CourseMetadata.fetch(course_module), + 'advanced_dict': advanced_dict, 'advanced_settings_url': reverse_course_url('advanced_settings_handler', course_key), 'publisher_enabled': publisher_enabled, diff --git a/cms/envs/common.py b/cms/envs/common.py index 62f6142696..2f255bedc9 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -328,6 +328,7 @@ FEATURES = { 'ENABLE_READING_FROM_MULTIPLE_HISTORY_TABLES': True, 'SHOW_FOOTER_LANGUAGE_SELECTOR': False, 'ENABLE_ENROLLMENT_RESET': False, + 'DISABLE_MOBILE_COURSE_AVAILABLE': False, } ENABLE_JASMINE = False diff --git a/lms/envs/common.py b/lms/envs/common.py index dbefe08935..e454a619bc 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -407,6 +407,7 @@ FEATURES = { # Enable feature to remove enrollments and users. Used to reset state of master's integration environments 'ENABLE_ENROLLMENT_RESET': False, + 'DISABLE_MOBILE_COURSE_AVAILABLE': False, } # Settings for the course reviews tool template and identification key, set either to None to disable course reviews