diff --git a/MANIFEST.in b/MANIFEST.in index 826968b..0b77997 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ include README.rst include package.json +recursive-include armstrong/esi/templates *.html prune build/* diff --git a/armstrong/esi/templates/esi/esi_tag.html b/armstrong/esi/templates/esi/esi_tag.html new file mode 100644 index 0000000..5410516 --- /dev/null +++ b/armstrong/esi/templates/esi/esi_tag.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/armstrong/esi/templatetags/esi.py b/armstrong/esi/templatetags/esi.py index f343423..841d6a9 100644 --- a/armstrong/esi/templatetags/esi.py +++ b/armstrong/esi/templatetags/esi.py @@ -1,10 +1,11 @@ +import copy from django import template from django.template import defaulttags from django.template.defaulttags import URLNode +from django.template.loader import render_to_string register = template.Library() -esi_tmpl = '' class EsiTemplateTagError(Exception): pass @@ -25,14 +26,22 @@ def render(self, context): except KeyError: raise EsiTemplateTagError('The esi templatetag requires the esi context processor, but it isn\'t present.') - url = self.raw_url or super(EsiNode, self).render(context) + if self.raw_url: + url = self.raw_url + else: + url = super(EsiNode, self).render(context) + if self.asvar: + url = context[self.asvar] + + render_context = copy.copy(context) + render_context['esi_url'] = url + result = render_to_string('esi/esi_tag.html', render_context) if self.asvar: - url = context[self.asvar] - context[self.asvar] = esi_tmpl % url + context[self.asvar] = result return '' - else: - return esi_tmpl % url + + return result @register.tag def esi(parser, token):