def get_preview_fragment(request, descriptor, context): """ Returns the HTML returned by the XModule's student_view or author_view (if available), specified by the descriptor and idx. """ module = _load_preview_module(request, descriptor) preview_view = AUTHOR_VIEW if has_author_view(module) else STUDENT_VIEW try: fragment = module.render(preview_view, context) except Exception as exc: # pylint: disable=broad-except log.warning("Unable to render %s for %r", preview_view, module, exc_info=True) fragment = Fragment(render_to_string('html_error.html', {'message': str(exc)})) return fragment
def get_preview_fragment(request, descriptor, context): """ Returns the HTML returned by the XModule's student_view or author_view (if available), specified by the descriptor and idx. """ module = _load_preview_module(request, descriptor) preview_view = AUTHOR_VIEW if has_author_view(module) else STUDENT_VIEW try: fragment = module.render(preview_view, context) except Exception as exc: # pylint: disable=broad-except log.warning(u"Unable to render %s for %r", preview_view, module, exc_info=True) fragment = Fragment(render_to_string('html_error.html', {'message': str(exc)})) return fragment
def _load_preview_module(request, descriptor): """ Return a preview XModule instantiated from the supplied descriptor. Will use mutable fields if XModule supports an author_view. Otherwise, will use immutable fields and student_view. request: The active django request descriptor: An XModuleDescriptor """ student_data = KvsFieldData(SessionKeyValueStore(request)) if has_author_view(descriptor): wrapper = partial(CmsFieldData, student_data=student_data) else: wrapper = partial(LmsFieldData, student_data=student_data) # wrap the _field_data upfront to pass to _preview_module_system wrapped_field_data = wrapper(descriptor._field_data) # pylint: disable=protected-access preview_runtime = _preview_module_system(request, descriptor, wrapped_field_data) descriptor.bind_for_student(preview_runtime, request.user.id, [wrapper]) return descriptor