From fce84e925197a252d27cd051ea6b8d2fc304dac1 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 2 Jul 2014 09:58:17 +0200 Subject: [PATCH] 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. --- src/cmsplugin_blurp/templatetags/blurp_tags.py | 17 ++++++++++++++++- src/cmsplugin_blurp/utils.py | 6 ++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/cmsplugin_blurp/templatetags/blurp_tags.py b/src/cmsplugin_blurp/templatetags/blurp_tags.py index 0cb7939..f69e3a3 100644 --- a/src/cmsplugin_blurp/templatetags/blurp_tags.py +++ b/src/cmsplugin_blurp/templatetags/blurp_tags.py @@ -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 diff --git a/src/cmsplugin_blurp/utils.py b/src/cmsplugin_blurp/utils.py index a4fc5cd..b462078 100644 --- a/src/cmsplugin_blurp/utils.py +++ b/src/cmsplugin_blurp/utils.py @@ -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)