Conflicts: cms/djangoapps/contentstore/course_info_model.py cms/djangoapps/contentstore/module_info_model.py cms/djangoapps/contentstore/tests/factories.py cms/djangoapps/contentstore/tests/test_course_settings.py cms/djangoapps/contentstore/views.py cms/djangoapps/models/settings/course_details.py cms/djangoapps/models/settings/course_grading.py cms/templates/edit_subsection.html common/djangoapps/mitxmako/shortcuts.py common/djangoapps/static_replace.py common/djangoapps/util/converters.py common/djangoapps/xmodule_modifiers.py common/lib/xmodule/setup.py common/lib/xmodule/xmodule/abtest_module.py common/lib/xmodule/xmodule/capa_module.py common/lib/xmodule/xmodule/course_module.py common/lib/xmodule/xmodule/discussion_module.py common/lib/xmodule/xmodule/error_module.py common/lib/xmodule/xmodule/html_module.py common/lib/xmodule/xmodule/js/src/video/display.coffee common/lib/xmodule/xmodule/mako_module.py common/lib/xmodule/xmodule/modulestore/mongo.py common/lib/xmodule/xmodule/modulestore/store_utilities.py common/lib/xmodule/xmodule/modulestore/xml.py common/lib/xmodule/xmodule/modulestore/xml_importer.py common/lib/xmodule/xmodule/raw_module.py common/lib/xmodule/xmodule/self_assessment_module.py common/lib/xmodule/xmodule/seq_module.py common/lib/xmodule/xmodule/template_module.py common/lib/xmodule/xmodule/tests/__init__.py common/lib/xmodule/xmodule/tests/test_export.py common/lib/xmodule/xmodule/tests/test_import.py common/lib/xmodule/xmodule/video_module.py common/lib/xmodule/xmodule/x_module.py common/lib/xmodule/xmodule/xml_module.py lms/djangoapps/courseware/access.py lms/djangoapps/courseware/courses.py lms/djangoapps/courseware/grades.py lms/djangoapps/courseware/models.py lms/djangoapps/courseware/module_render.py lms/djangoapps/courseware/tests/tests.py lms/djangoapps/courseware/views.py lms/djangoapps/django_comment_client/utils.py lms/templates/staff_problem_info.html lms/templates/video.html rakefile
35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
from lxml import etree
|
|
from xmodule.editing_module import XMLEditingDescriptor
|
|
from xmodule.xml_module import XmlDescriptor
|
|
import logging
|
|
import sys
|
|
from xblock.core import String, Scope
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class RawDescriptor(XmlDescriptor, XMLEditingDescriptor):
|
|
"""
|
|
Module that provides a raw editing view of its data and children. It
|
|
requires that the definition xml is valid.
|
|
"""
|
|
data = String(help="XML data for the module", scope=Scope.content)
|
|
|
|
@classmethod
|
|
def definition_from_xml(cls, xml_object, system):
|
|
return {'data': etree.tostring(xml_object, pretty_print=True, encoding='unicode')}, []
|
|
|
|
def definition_to_xml(self, resource_fs):
|
|
try:
|
|
return etree.fromstring(self.data)
|
|
except etree.XMLSyntaxError as err:
|
|
# Can't recover here, so just add some info and
|
|
# re-raise
|
|
lines = self.data.split('\n')
|
|
line, offset = err.position
|
|
msg = ("Unable to create xml for problem {loc}. "
|
|
"Context: '{context}'".format(
|
|
context=lines[line - 1][offset - 40:offset + 40],
|
|
loc=self.location))
|
|
raise Exception, msg, sys.exc_info()[2]
|