Commit 8a4503b3 by David Baumgold Committed by Sarina Canelake

Display Scope.content fields in Studio editor

But mark `data` as non-editable metadata, so that it doesn't appear
parent fe3326d8
...@@ -200,6 +200,12 @@ class CapaFields(object): ...@@ -200,6 +200,12 @@ class CapaFields(object):
scope=Scope.settings 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): class CapaMixin(CapaFields):
""" """
......
...@@ -41,6 +41,12 @@ class DiscussionFields(object): ...@@ -41,6 +41,12 @@ class DiscussionFields(object):
) )
sort_key = String(scope=Scope.settings) 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): class DiscussionModule(DiscussionFields, XModule):
js = { js = {
......
...@@ -54,6 +54,12 @@ class HtmlFields(object): ...@@ -54,6 +54,12 @@ class HtmlFields(object):
scope=Scope.settings 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): class HtmlModuleMixin(HtmlFields, XModule):
""" """
...@@ -299,6 +305,12 @@ class AboutFields(object): ...@@ -299,6 +305,12 @@ class AboutFields(object):
scope=Scope.content 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") @XBlock.tag("detached")
class AboutModule(AboutFields, HtmlModuleMixin): class AboutModule(AboutFields, HtmlModuleMixin):
...@@ -336,6 +348,12 @@ class StaticTabFields(object): ...@@ -336,6 +348,12 @@ class StaticTabFields(object):
help=_("HTML for the additional pages") 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") @XBlock.tag("detached")
class StaticTabModule(StaticTabFields, HtmlModuleMixin): class StaticTabModule(StaticTabFields, HtmlModuleMixin):
...@@ -370,6 +388,12 @@ class CourseInfoFields(object): ...@@ -370,6 +388,12 @@ class CourseInfoFields(object):
scope=Scope.content 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") @XBlock.tag("detached")
class CourseInfoModule(CourseInfoFields, HtmlModuleMixin): class CourseInfoModule(CourseInfoFields, HtmlModuleMixin):
......
...@@ -15,6 +15,12 @@ class RawDescriptor(XmlDescriptor, XMLEditingDescriptor): ...@@ -15,6 +15,12 @@ class RawDescriptor(XmlDescriptor, XMLEditingDescriptor):
""" """
data = String(help="XML data for the module", default="", scope=Scope.content) 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 @classmethod
def definition_from_xml(cls, xml_object, system): def definition_from_xml(cls, xml_object, system):
return {'data': etree.tostring(xml_object, pretty_print=True, encoding='unicode')}, [] return {'data': etree.tostring(xml_object, pretty_print=True, encoding='unicode')}, []
...@@ -44,6 +50,12 @@ class EmptyDataRawDescriptor(XmlDescriptor, XMLEditingDescriptor): ...@@ -44,6 +50,12 @@ class EmptyDataRawDescriptor(XmlDescriptor, XMLEditingDescriptor):
""" """
data = String(default='', scope=Scope.content) 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 @classmethod
def definition_from_xml(cls, xml_object, system): def definition_from_xml(cls, xml_object, system):
if len(xml_object) == 0 and len(xml_object.items()) == 0: if len(xml_object) == 0 and len(xml_object.items()) == 0:
......
...@@ -620,8 +620,9 @@ class XModuleMixin(XModuleFields, XBlockMixin): ...@@ -620,8 +620,9 @@ class XModuleMixin(XModuleFields, XBlockMixin):
fields = getattr(self, 'unmixed_class', self.__class__).fields fields = getattr(self, 'unmixed_class', self.__class__).fields
for field in fields.values(): for field in fields.values():
if field in self.non_editable_metadata_fields:
if field.scope != Scope.settings or field in self.non_editable_metadata_fields: continue
if field.scope not in (Scope.settings, Scope.content):
continue continue
metadata_fields[field.name] = self._create_metadata_editor_info(field) metadata_fields[field.name] = self._create_metadata_editor_info(field)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment