diff --git a/netbox/templates/generic/object_list.html b/netbox/templates/generic/object_list.html index bf1e5b970..f180004ed 100644 --- a/netbox/templates/generic/object_list.html +++ b/netbox/templates/generic/object_list.html @@ -26,13 +26,13 @@ Context:
{% block extra_controls %}{% endblock %} {% if 'add' in actions %} - {% add_button model|validated_viewname:"add" %} + {% add_button model %} {% endif %} {% if 'import' in actions %} - {% import_button model|validated_viewname:"import" %} + {% import_button model %} {% endif %} {% if 'export' in actions %} - {% export_button model|content_type %} + {% export_button model %} {% endif %}
diff --git a/netbox/utilities/templates/buttons/add.html b/netbox/utilities/templates/buttons/add.html index 60767951a..ab74dd7b9 100644 --- a/netbox/utilities/templates/buttons/add.html +++ b/netbox/utilities/templates/buttons/add.html @@ -1,9 +1,5 @@ -{% comment %}
- - -  Add +{% if url %} + + Add -
{% endcomment %} - - Add - +{% endif %} diff --git a/netbox/utilities/templates/buttons/import.html b/netbox/utilities/templates/buttons/import.html index 9df619607..8dab911c4 100644 --- a/netbox/utilities/templates/buttons/import.html +++ b/netbox/utilities/templates/buttons/import.html @@ -1,3 +1,5 @@ - -  Import - +{% if url %} + + Import + +{% endif %} diff --git a/netbox/utilities/templatetags/buttons.py b/netbox/utilities/templatetags/buttons.py index 4b8fd931f..a7a8cbfa9 100644 --- a/netbox/utilities/templatetags/buttons.py +++ b/netbox/utilities/templatetags/buttons.py @@ -1,5 +1,6 @@ from django import template -from django.urls import reverse +from django.contrib.contenttypes.models import ContentType +from django.urls import NoReverseMatch, reverse from extras.models import ExportTemplate from utilities.utils import get_viewname, prepare_cloned_fields @@ -50,24 +51,32 @@ def delete_button(instance): # @register.inclusion_tag('buttons/add.html') -def add_button(url): - url = reverse(url) +def add_button(model, action='add'): + try: + url = reverse(get_viewname(model, action)) + except NoReverseMatch: + url = None return { - 'add_url': url, + 'url': url, } @register.inclusion_tag('buttons/import.html') -def import_button(url): +def import_button(model, action='import'): + try: + url = reverse(get_viewname(model, action)) + except NoReverseMatch: + url = None return { - 'import_url': url, + 'url': url, } @register.inclusion_tag('buttons/export.html', takes_context=True) -def export_button(context, content_type): +def export_button(context, model): + content_type = ContentType.objects.get_for_model(model) user = context['request'].user # Determine if the "all data" export returns CSV or YAML diff --git a/netbox/utilities/templatetags/helpers.py b/netbox/utilities/templatetags/helpers.py index 053eee728..47808630b 100644 --- a/netbox/utilities/templatetags/helpers.py +++ b/netbox/utilities/templatetags/helpers.py @@ -1,6 +1,5 @@ import datetime import decimal -import re from typing import Dict, Any from django import template