Przeglądaj źródła

Move bulk edit/delete buttons to template tags

jeremystretch 3 lat temu
rodzic
commit
76445bd19c

+ 4 - 12
netbox/templates/generic/object_list.html

@@ -75,14 +75,10 @@ Context:
             <div class="card-body">
               <div class="float-end">
                 {% if 'bulk_edit' in actions %}
-                  <button type="submit" name="_edit" formaction="{% url model|viewname:"bulk_edit" %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning btn-sm" disabled>
-                    <span class="mdi mdi-pencil" aria-hidden="true"></span> Edit All
-                  </button>
+                  {% bulk_edit_button model query_params=request.GET %}
                 {% endif %}
                 {% if 'bulk_delete' in actions %}
-                  <button type="submit" name="_delete" formaction="{% url model|viewname:"bulk_delete" %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-sm" disabled>
-                    <span class="mdi mdi-trash-can-outline" aria-hidden="true"></span> Delete All
-                  </button>
+                  {% bulk_delete_button model query_params=request.GET %}
                 {% endif %}
               </div>
               <div class="form-check">
@@ -115,14 +111,10 @@ Context:
           <div class="bulk-button-group">
             {% block bulk_buttons %}
               {% if 'bulk_edit' in actions %}
-                <button type="submit" name="_edit" formaction="{% url model|viewname:"bulk_edit" %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-warning btn-sm">
-                  <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
-                </button>
+                {% bulk_edit_button model query_params=request.GET %}
               {% endif %}
               {% if 'bulk_delete' in actions %}
-                <button type="submit" name="_delete" formaction="{% url model|viewname:"bulk_delete" %}{% if request.GET %}?{{ request.GET.urlencode }}{% endif %}" class="btn btn-danger btn-sm">
-                  <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
-                </button>
+                {% bulk_delete_button model query_params=request.GET %}
               {% endif %}
             {% endblock %}
           </div>

+ 5 - 0
netbox/utilities/templates/buttons/bulk_delete.html

@@ -0,0 +1,5 @@
+{% if url %}
+  <button type="submit" name="_delete" formaction="{{ url }}" class="btn btn-danger btn-sm">
+    <i class="mdi mdi-trash-can-outline" aria-hidden="true"></i> Delete Selected
+  </button>
+{% endif %}

+ 5 - 0
netbox/utilities/templates/buttons/bulk_edit.html

@@ -0,0 +1,5 @@
+{% if url %}
+  <button type="submit" name="_edit" formaction="{{ url }}" class="btn btn-warning btn-sm">
+    <i class="mdi mdi-pencil" aria-hidden="true"></i> Edit Selected
+  </button>
+{% endif %}

+ 28 - 0
netbox/utilities/templatetags/buttons.py

@@ -92,3 +92,31 @@ def export_button(context, model):
         'export_templates': export_templates,
         'data_format': data_format,
     }
+
+
+@register.inclusion_tag('buttons/bulk_edit.html')
+def bulk_edit_button(model, action='bulk_edit', query_params=None):
+    try:
+        url = reverse(get_viewname(model, action))
+        if query_params:
+            url = f'{url}?{query_params.urlencode()}'
+    except NoReverseMatch:
+        url = None
+
+    return {
+        'url': url,
+    }
+
+
+@register.inclusion_tag('buttons/bulk_delete.html')
+def bulk_delete_button(model, action='bulk_delete', query_params=None):
+    try:
+        url = reverse(get_viewname(model, action))
+        if query_params:
+            url = f'{url}?{query_params.urlencode()}'
+    except NoReverseMatch:
+        url = None
+
+    return {
+        'url': url,
+    }