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
This commit is contained in:
Adeel Khan
2020-02-11 16:31:20 +05:00
parent 9d81f2a320
commit d8fb768684
4 changed files with 36 additions and 1 deletions

View File

@@ -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):
"""

View File

@@ -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,

View File

@@ -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

View File

@@ -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