Files
edx-platform/common/djangoapps/edxmako/services.py
Jillian Vogel 457f959356 refactor: deprecates ModuleSystem.render_template
in favor of the added MakoSystem render_template method.

Related changes:
* Adds the MakoService to the StudioEditModuleRuntime,
  PreviewModuleSystem, LmsModuleSystem, and XBlockRuntime
* MakoService constructor takes a `namespace_prefix` string, so that the
  CMS PreviewModuleSystem can render to LMS templates, without needing
  the special render_from_lms helper method.
* ModuleSystem.render_template becomes a read-only property, so the
  constructor calls and test module systems are updated accordingly.
* Adds tests for the MakoService and module system shims.
2021-11-09 14:03:50 +10:30

31 lines
942 B
Python

"""
Supports rendering an XBlock to HTML using mako templates.
"""
from xblock.reference.plugins import Service
from common.djangoapps.edxmako.shortcuts import render_to_string
class MakoService(Service):
"""
A service for rendering XBlocks to HTML using mako templates.
Args:
namespace_prefix(string): optional prefix to the mako namespace used to find the template file.
e.g to access LMS templates from within Studio code, pass namespace_prefix='lms.'
"""
def __init__(
self,
namespace_prefix='',
**kwargs
):
super().__init__(**kwargs)
self.namespace_prefix = namespace_prefix
def render_template(self, template_file, dictionary, namespace='main'):
"""
Takes (template_file, dictionary) and returns rendered HTML.
"""
return render_to_string(template_file, dictionary, namespace=self.namespace_prefix + namespace)