Closes #5202: Extend the available context data when rendering custom links

This commit is contained in:
Jeremy Stretch
2020-10-09 12:36:09 -04:00
parent b5a65bc66c
commit f35715683e
3 changed files with 28 additions and 7 deletions

View File

@@ -20,8 +20,8 @@ GROUP_BUTTON = '<div class="btn-group">\n' \
GROUP_LINK = '<li><a href="{}"{}>{}</a></li>\n'
@register.simple_tag()
def custom_links(obj):
@register.simple_tag(takes_context=True)
def custom_links(context, obj):
"""
Render all applicable links for the given object.
"""
@@ -30,8 +30,13 @@ def custom_links(obj):
if not custom_links:
return ''
context = {
# Pass select context data when rendering the CustomLink
link_context = {
'obj': obj,
'debug': context['debug'], # django.template.context_processors.debug
'request': context['request'], # django.template.context_processors.request
'user': context['user'], # django.contrib.auth.context_processors.auth
'perms': context['perms'], # django.contrib.auth.context_processors.auth
}
template_code = ''
group_names = OrderedDict()
@@ -47,9 +52,9 @@ def custom_links(obj):
# Add non-grouped links
else:
try:
text_rendered = render_jinja2(cl.text, context)
text_rendered = render_jinja2(cl.text, link_context)
if text_rendered:
link_rendered = render_jinja2(cl.url, context)
link_rendered = render_jinja2(cl.url, link_context)
link_target = ' target="_blank"' if cl.new_window else ''
template_code += LINK_BUTTON.format(
link_rendered, link_target, cl.button_class, text_rendered
@@ -65,10 +70,10 @@ def custom_links(obj):
for cl in links:
try:
text_rendered = render_jinja2(cl.text, context)
text_rendered = render_jinja2(cl.text, link_context)
if text_rendered:
link_target = ' target="_blank"' if cl.new_window else ''
link_rendered = render_jinja2(cl.url, context)
link_rendered = render_jinja2(cl.url, link_context)
links_rendered.append(
GROUP_LINK.format(link_rendered, link_target, text_rendered)
)