2017-05-27 19:18:27 +02:00
|
|
|
try:
|
|
|
|
from importlib import import_module
|
|
|
|
except ImportError:
|
|
|
|
from django.utils.importlib import import_module
|
2014-06-30 16:09:00 +02:00
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
|
|
|
|
from . import app_settings
|
|
|
|
|
|
|
|
def renderer_description(renderer):
|
|
|
|
if 'name' in renderer.config:
|
|
|
|
if 'template_name' in renderer.config:
|
|
|
|
return _('{name} using template {template}').format(
|
|
|
|
name=renderer.config['name'],
|
|
|
|
template=renderer.config['template_name'])
|
|
|
|
else:
|
|
|
|
return renderer.config['name']
|
|
|
|
|
|
|
|
def renderers_choices():
|
|
|
|
for slug in app_settings.RENDERERS:
|
|
|
|
renderer = resolve_renderer(slug)
|
|
|
|
yield slug, renderer_description(renderer) or slug
|
|
|
|
|
2015-01-24 12:33:55 +01:00
|
|
|
def create_renderer(name, instance):
|
|
|
|
'''Create a renderer instance of given name from a settings dictionary'''
|
|
|
|
module_name, class_name = instance['class'].rsplit('.', 1)
|
|
|
|
module = import_module(module_name)
|
|
|
|
return getattr(module, class_name)(name, instance)
|
|
|
|
|
2014-06-30 16:09:00 +02:00
|
|
|
def resolve_renderer(name):
|
|
|
|
'''Create a renderer instance from slug name of its settings'''
|
|
|
|
instance = app_settings.RENDERERS.get(name)
|
|
|
|
if instance:
|
2015-01-24 12:33:55 +01:00
|
|
|
return create_renderer(name, instance)
|
2014-07-02 09:58:17 +02:00
|
|
|
|
|
|
|
def insert_blurp_in_context(name, context):
|
|
|
|
renderer = resolve_renderer(name)
|
|
|
|
if not renderer:
|
|
|
|
return ''
|
|
|
|
return renderer.render(context)
|