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 %} {% 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