templatetags: add block tag to insert blurp variables into the current context
This does not work with ajax blurp for now, you will only get synchronous loading.
This commit is contained in:
parent
0d6ab6fbbd
commit
fce84e9251
|
@ -7,6 +7,7 @@ from .. import utils
|
|||
|
||||
register = template.Library()
|
||||
|
||||
@register.tag
|
||||
class RenderBlurp(Tag):
|
||||
name = 'render_blurp'
|
||||
options = Options(
|
||||
|
@ -23,4 +24,18 @@ class RenderBlurp(Tag):
|
|||
if not hasattr(template, 'render'):
|
||||
template = template.Template(template)
|
||||
return template.render(context)
|
||||
register.tag(RenderBlurp)
|
||||
|
||||
@register.tag
|
||||
class BlurpNode(Tag):
|
||||
'''Insert content generated from a blurp block and render inside template'''
|
||||
name = 'blurp'
|
||||
options = Options(
|
||||
Argument('name'),
|
||||
blocks=[('endblurp', 'nodelist')])
|
||||
|
||||
def render_tag(self, context, name, nodelist):
|
||||
context.push()
|
||||
utils.insert_blurp_in_context(name, context)
|
||||
output = self.nodelist.render(context)
|
||||
context.pop()
|
||||
return output
|
||||
|
|
|
@ -24,3 +24,9 @@ def resolve_renderer(name):
|
|||
module_name, class_name = instance['class'].rsplit('.', 1)
|
||||
module = import_module(module_name)
|
||||
return getattr(module, class_name)(name, instance)
|
||||
|
||||
def insert_blurp_in_context(name, context):
|
||||
renderer = resolve_renderer(name)
|
||||
if not renderer:
|
||||
return ''
|
||||
return renderer.render(context)
|
||||
|
|
Reference in New Issue