diff --git a/cms/djangoapps/contentstore/tests/test_course_settings.py b/cms/djangoapps/contentstore/tests/test_course_settings.py index dc04302721b91c16eda599a1df4e05fd8cb45230..3d434ef93e09ab8ffdf363b7750ad85cf6c8e1d0 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 26732dd1bebd1bb19e609820e69f3774ea43ecd9..3effe650e728e607476f0f41731e620370073b10 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 62f61426969c0d9c0a0a8a41a9fb85b4fefcd56f..2f255bedc988c0dc74e780f12d40a018dae0aa3c 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 dbefe08935be40e011badf5190ed9d9201567741..e454a619bc655ba8578eb46ea6aafd203902cb0e 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