diff --git a/common/lib/xmodule/xmodule/library_content_module.py b/common/lib/xmodule/xmodule/library_content_module.py index ed740af487..972919e2fa 100644 --- a/common/lib/xmodule/xmodule/library_content_module.py +++ b/common/lib/xmodule/xmodule/library_content_module.py @@ -322,6 +322,15 @@ class LibraryContentDescriptor(LibraryContentFields, MakoModuleDescriptor, XmlDe js = {'coffee': [resource_string(__name__, 'js/src/vertical/edit.coffee')]} js_module_name = "VerticalDescriptor" + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(LibraryContentDescriptor, self).non_editable_metadata_fields + # The only supported mode is currently 'random'. + # Add the mode field to non_editable_metadata_fields so that it doesn't + # render in the edit form. + non_editable_fields.append(LibraryContentFields.mode) + return non_editable_fields + @XBlock.handler def refresh_children(self, request=None, suffix=None): # pylint: disable=unused-argument """ diff --git a/common/lib/xmodule/xmodule/tests/test_library_content.py b/common/lib/xmodule/xmodule/tests/test_library_content.py index b92404df10..bb8ac794f3 100644 --- a/common/lib/xmodule/xmodule/tests/test_library_content.py +++ b/common/lib/xmodule/xmodule/tests/test_library_content.py @@ -5,7 +5,7 @@ Basic unit tests for LibraryContentModule Higher-level tests are in `cms/djangoapps/contentstore/tests/test_libraries.py`. """ import ddt -from xmodule.library_content_module import LibraryVersionReference, ANY_CAPA_TYPE_VALUE +from xmodule.library_content_module import LibraryVersionReference, ANY_CAPA_TYPE_VALUE, LibraryContentDescriptor from xmodule.modulestore.tests.factories import LibraryFactory, CourseFactory, ItemFactory from xmodule.modulestore.tests.utils import MixedSplitTestCase from xmodule.tests import get_test_system @@ -242,3 +242,12 @@ class TestLibraries(MixedSplitTestCase): self.lc_block.capa_type = ANY_CAPA_TYPE_VALUE self.lc_block.refresh_children() self.assertEqual(len(self.lc_block.children), len(self.lib_blocks) + 4) + + def test_non_editable_settings(self): + """ + Test the settings that are marked as "non-editable". + """ + non_editable_metadata_fields = self.lc_block.non_editable_metadata_fields + self.assertIn(LibraryContentDescriptor.mode, non_editable_metadata_fields) + self.assertNotIn(LibraryContentDescriptor.display_name, non_editable_metadata_fields) +