Display Scope.content fields in Studio editor
But mark `data` as non-editable metadata, so that it doesn't appear
This commit is contained in:
committed by
Sarina Canelake
parent
fe3326d8f2
commit
8a4503b3f4
@@ -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):
|
||||
"""
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user