* Consolidates and renames the runtime used as a base for all the others:
* Before: `xmodule.x_module:DescriptorSystem` and
`xmodule.mako_block:MakoDescriptorSystem`.
* After: `xmodule.x_module:ModuleStoreRuntime`.
* Co-locates and renames the runtimes for importing course OLX:
* Before: `xmodule.x_module:XMLParsingSystem` and
`xmodule.modulestore.xml:ImportSystem`.
* After: `xmodule.modulestore.xml:XMLParsingModuleStoreRuntime` and
`xmodule.modulestore.xml:XMLImportingModuleStoreRuntime`.
* Note: I would have liked to consolidate these, but it would have
involved nontrivial test refactoring.
* Renames the stub Old Mongo runtime:
* Before: `xmodule.modulestore.mongo.base:CachingDescriptorSystem`.
* After: `xmodule.modulestore.mongo.base:OldModuleStoreRuntime`.
* Renames the Split Mongo runtime, the which is what runs courses in LMS and CMS:
* Before: `xmodule.modulestore.split_mongo.caching_descriptor_system:CachingDescriptorSystem`.
* After: `xmodule.modulestore.split_mongo.runtime:SplitModuleStoreRuntime`.
* Renames some of the dummy runtimes used only in unit tests.
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
"""
|
|
Code to handle mako templating for XModules and XBlocks.
|
|
"""
|
|
|
|
|
|
from web_fragments.fragment import Fragment
|
|
|
|
from .x_module import shim_xmodule_js
|
|
|
|
|
|
class MakoTemplateBlockBase:
|
|
"""
|
|
XBlock intended as a mixin that uses a mako template
|
|
to specify the block html.
|
|
|
|
Expects the descriptor to have the `mako_template` attribute set
|
|
with the name of the template to render, and it will pass
|
|
the descriptor as the `module` parameter to that template
|
|
"""
|
|
# pylint: disable=no-member
|
|
|
|
js_module_name = None
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def get_context(self):
|
|
"""
|
|
Return the context to render the mako template with
|
|
"""
|
|
return {
|
|
'module': self,
|
|
'editable_metadata_fields': self.editable_metadata_fields
|
|
}
|
|
|
|
def studio_view(self, context): # pylint: disable=unused-argument
|
|
"""
|
|
View used in Studio.
|
|
"""
|
|
# pylint: disable=no-member
|
|
fragment = Fragment(
|
|
self.runtime.service(self, 'mako').render_template(self.mako_template, self.get_context())
|
|
)
|
|
shim_xmodule_js(fragment, self.js_module_name)
|
|
return fragment
|