Also: Render all XModuleDescriptors in the cms the same way Default them to editing raw xml, if there is no specific module for them
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from pkg_resources import resource_string
|
|
from mako_module import MakoModuleDescriptor
|
|
from lxml import etree
|
|
|
|
class RawDescriptor(MakoModuleDescriptor):
|
|
"""
|
|
Module that provides a raw editing view of it's data and children
|
|
"""
|
|
mako_template = "widgets/raw-edit.html"
|
|
|
|
js = {'coffee': [resource_string(__name__, 'js/module/raw.coffee')]}
|
|
js_module = 'Raw'
|
|
|
|
def get_context(self):
|
|
return {
|
|
'module': self,
|
|
'data': self.definition['data'],
|
|
}
|
|
|
|
@classmethod
|
|
def from_xml(cls, xml_data, system, org=None, course=None):
|
|
"""
|
|
Creates an instance of this descriptor from the supplied xml_data.
|
|
This may be overridden by subclasses
|
|
|
|
xml_data: A string of xml that will be translated into data and children for
|
|
this module
|
|
system: An XModuleSystem for interacting with external resources
|
|
org and course are optional strings that will be used in the generated modules
|
|
url identifiers
|
|
"""
|
|
xml_object = etree.fromstring(xml_data)
|
|
return cls(
|
|
system,
|
|
definition={'data': xml_data},
|
|
location=['i4x',
|
|
org,
|
|
course,
|
|
xml_object.tag,
|
|
xml_object.get('name')]
|
|
)
|