mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -06:00
Move rendering logic under CustomLink class
This commit is contained in:
parent
d650d10cb2
commit
3d7d19b608
@ -229,6 +229,24 @@ class CustomLink(ChangeLoggedModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('extras:customlink', args=[self.pk])
|
return reverse('extras:customlink', args=[self.pk])
|
||||||
|
|
||||||
|
def render(self, context):
|
||||||
|
"""
|
||||||
|
Render the CustomLink given the provided context, and return the text, link, and link_target.
|
||||||
|
|
||||||
|
:param context: The context passed to Jinja2
|
||||||
|
"""
|
||||||
|
text = render_jinja2(self.link_text, context)
|
||||||
|
if not text:
|
||||||
|
return {}
|
||||||
|
link = render_jinja2(self.link_url, context)
|
||||||
|
link_target = ' target="_blank"' if self.new_window else ''
|
||||||
|
|
||||||
|
return {
|
||||||
|
'text': text,
|
||||||
|
'link': link,
|
||||||
|
'link_target': link_target,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@extras_features('webhooks', 'export_templates')
|
@extras_features('webhooks', 'export_templates')
|
||||||
class ExportTemplate(ChangeLoggedModel):
|
class ExportTemplate(ChangeLoggedModel):
|
||||||
|
@ -62,16 +62,14 @@ def custom_links(context, obj):
|
|||||||
# Add non-grouped links
|
# Add non-grouped links
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
text_rendered = render_jinja2(cl.link_text, link_context)
|
rendered = cl.render(link_context)
|
||||||
if text_rendered:
|
if rendered:
|
||||||
link_rendered = render_jinja2(cl.link_url, link_context)
|
|
||||||
link_target = ' target="_blank"' if cl.new_window else ''
|
|
||||||
template_code += LINK_BUTTON.format(
|
template_code += LINK_BUTTON.format(
|
||||||
link_rendered, link_target, cl.button_class, text_rendered
|
rendered['link'], rendered['link_target'], cl.button_class, rendered['text']
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
template_code += '<a class="btn btn-sm btn-outline-dark" disabled="disabled" title="{}">' \
|
template_code += f'<a class="btn btn-sm btn-outline-dark" disabled="disabled" title="{e}">' \
|
||||||
'<i class="mdi mdi-alert"></i> {}</a>\n'.format(e, cl.name)
|
f'<i class="mdi mdi-alert"></i> {cl.name}</a>\n'
|
||||||
|
|
||||||
# Add grouped links to template
|
# Add grouped links to template
|
||||||
for group, links in group_names.items():
|
for group, links in group_names.items():
|
||||||
@ -80,17 +78,15 @@ def custom_links(context, obj):
|
|||||||
|
|
||||||
for cl in links:
|
for cl in links:
|
||||||
try:
|
try:
|
||||||
text_rendered = render_jinja2(cl.link_text, link_context)
|
rendered = cl.render(link_context)
|
||||||
if text_rendered:
|
if rendered:
|
||||||
link_target = ' target="_blank"' if cl.new_window else ''
|
|
||||||
link_rendered = render_jinja2(cl.link_url, link_context)
|
|
||||||
links_rendered.append(
|
links_rendered.append(
|
||||||
GROUP_LINK.format(link_rendered, link_target, text_rendered)
|
GROUP_LINK.format(rendered['link'], rendered['link_target'], rendered['text'])
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
links_rendered.append(
|
links_rendered.append(
|
||||||
'<li><a class="dropdown-item" disabled="disabled" title="{}"><span class="text-muted">'
|
f'<li><a class="dropdown-item" disabled="disabled" title="{e}"><span class="text-muted">'
|
||||||
'<i class="mdi mdi-alert"></i> {}</span></a></li>'.format(e, cl.name)
|
f'<i class="mdi mdi-alert"></i> {cl.name}</span></a></li>'
|
||||||
)
|
)
|
||||||
|
|
||||||
if links_rendered:
|
if links_rendered:
|
||||||
|
Loading…
Reference in New Issue
Block a user