diff --git a/common/lib/xmodule/xmodule/capa_base.py b/common/lib/xmodule/xmodule/capa_base.py index 3c0396a7bf..f3ff1fd8dc 100644 --- a/common/lib/xmodule/xmodule/capa_base.py +++ b/common/lib/xmodule/xmodule/capa_base.py @@ -200,6 +200,12 @@ class CapaFields(object): scope=Scope.settings ) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(CapaFields, self).non_editable_metadata_fields + non_editable_fields.append(CapaFields.data) + return non_editable_fields + class CapaMixin(CapaFields): """ diff --git a/common/lib/xmodule/xmodule/discussion_module.py b/common/lib/xmodule/xmodule/discussion_module.py index ed787fb296..4dba69314e 100644 --- a/common/lib/xmodule/xmodule/discussion_module.py +++ b/common/lib/xmodule/xmodule/discussion_module.py @@ -41,6 +41,12 @@ class DiscussionFields(object): ) sort_key = String(scope=Scope.settings) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(DiscussionFields, self).non_editable_metadata_fields + non_editable_fields.append(DiscussionFields.data) + return non_editable_fields + class DiscussionModule(DiscussionFields, XModule): js = { diff --git a/common/lib/xmodule/xmodule/html_module.py b/common/lib/xmodule/xmodule/html_module.py index b57a6bd970..9662d7f31c 100644 --- a/common/lib/xmodule/xmodule/html_module.py +++ b/common/lib/xmodule/xmodule/html_module.py @@ -54,6 +54,12 @@ class HtmlFields(object): scope=Scope.settings ) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(HtmlFields, self).non_editable_metadata_fields + non_editable_fields.append(HtmlFields.data) + return non_editable_fields + class HtmlModuleMixin(HtmlFields, XModule): """ @@ -299,6 +305,12 @@ class AboutFields(object): scope=Scope.content ) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(AboutFields, self).non_editable_metadata_fields + non_editable_fields.append(AboutFields.data) + return non_editable_fields + @XBlock.tag("detached") class AboutModule(AboutFields, HtmlModuleMixin): @@ -336,6 +348,12 @@ class StaticTabFields(object): help=_("HTML for the additional pages") ) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(StaticTabFields, self).non_editable_metadata_fields + non_editable_fields.append(StaticTabFields.data) + return non_editable_fields + @XBlock.tag("detached") class StaticTabModule(StaticTabFields, HtmlModuleMixin): @@ -370,6 +388,12 @@ class CourseInfoFields(object): scope=Scope.content ) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(CourseInfoFields, self).non_editable_metadata_fields + non_editable_fields.append(CourseInfoFields.data) + return non_editable_fields + @XBlock.tag("detached") class CourseInfoModule(CourseInfoFields, HtmlModuleMixin): diff --git a/common/lib/xmodule/xmodule/raw_module.py b/common/lib/xmodule/xmodule/raw_module.py index 0e9087c540..7aa522cf04 100644 --- a/common/lib/xmodule/xmodule/raw_module.py +++ b/common/lib/xmodule/xmodule/raw_module.py @@ -15,6 +15,12 @@ class RawDescriptor(XmlDescriptor, XMLEditingDescriptor): """ data = String(help="XML data for the module", default="", scope=Scope.content) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(RawDescriptor, self).non_editable_metadata_fields + non_editable_fields.append(RawDescriptor.data) + return non_editable_fields + @classmethod def definition_from_xml(cls, xml_object, system): return {'data': etree.tostring(xml_object, pretty_print=True, encoding='unicode')}, [] @@ -44,6 +50,12 @@ class EmptyDataRawDescriptor(XmlDescriptor, XMLEditingDescriptor): """ data = String(default='', scope=Scope.content) + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(EmptyDataRawDescriptor, self).non_editable_metadata_fields + non_editable_fields.append(EmptyDataRawDescriptor.data) + return non_editable_fields + @classmethod def definition_from_xml(cls, xml_object, system): if len(xml_object) == 0 and len(xml_object.items()) == 0: diff --git a/common/lib/xmodule/xmodule/x_module.py b/common/lib/xmodule/xmodule/x_module.py index cd92cbda2d..0a36ef89b6 100644 --- a/common/lib/xmodule/xmodule/x_module.py +++ b/common/lib/xmodule/xmodule/x_module.py @@ -620,8 +620,9 @@ class XModuleMixin(XModuleFields, XBlockMixin): fields = getattr(self, 'unmixed_class', self.__class__).fields for field in fields.values(): - - if field.scope != Scope.settings or field in self.non_editable_metadata_fields: + if field in self.non_editable_metadata_fields: + continue + if field.scope not in (Scope.settings, Scope.content): continue metadata_fields[field.name] = self._create_metadata_editor_info(field)