Просмотр исходного кода

Simplify add/import/export button invocation

jeremystretch 3 лет назад
Родитель
Сommit
5a3e99626d

+ 3 - 3
netbox/templates/generic/object_list.html

@@ -26,13 +26,13 @@ Context:
     <div class="control-group">
       {% 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 %}
     </div>
   </div>

+ 4 - 8
netbox/utilities/templates/buttons/add.html

@@ -1,9 +1,5 @@
-{% comment %} <div class="d-flex flex-shrink-1">
-  <a href="{{ add_url }}" type="button" class="btn btn-sm btn-success">
-    <i class="mdi mdi-plus-thick"></i>
-    &nbsp;Add
+{% if url %}
+  <a href="{{ url }}" type="button" class="btn btn-sm btn-success">
+    <i class="mdi mdi-plus-thick"></i> Add
   </a>
-</div> {% endcomment %}
-<a href="{{ add_url }}" type="button" class="btn btn-sm btn-success">
-  <i class="mdi mdi-plus-thick"></i> Add
-</a>
+{% endif %}

+ 5 - 3
netbox/utilities/templates/buttons/import.html

@@ -1,3 +1,5 @@
-<a href="{% url import_url %}" type="button" class="btn btn-sm btn-info">
-  <i class="mdi mdi-upload"></i>&nbsp;Import
-</a>
+{% if url %}
+  <a href="{{ url }}" type="button" class="btn btn-sm btn-info">
+    <i class="mdi mdi-upload"></i> Import
+  </a>
+{% endif %}

+ 16 - 7
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

+ 0 - 1
netbox/utilities/templatetags/helpers.py

@@ -1,6 +1,5 @@
 import datetime
 import decimal
-import re
 from typing import Dict, Any
 
 from django import template