Przeglądaj źródła

Closes #6146: Add bulk disconnect support for power feeds

jeremystretch 4 lat temu
rodzic
commit
f503c72782

+ 1 - 0
docs/release-notes/version-2.11.md

@@ -9,6 +9,7 @@
 * [#6109](https://github.com/netbox-community/netbox/issues/6109) - Add device counts to locations table
 * [#6121](https://github.com/netbox-community/netbox/issues/6121) - Extend parent interface assignment to VM interfaces
 * [#6125](https://github.com/netbox-community/netbox/issues/6125) - Add locations count to home page
+* [#6146](https://github.com/netbox-community/netbox/issues/6146) - Add bulk disconnect support for power feeds
 
 ### Bug Fixes (from Beta)
 

+ 1 - 0
netbox/dcim/urls.py

@@ -417,6 +417,7 @@ urlpatterns = [
     path('power-feeds/add/', views.PowerFeedEditView.as_view(), name='powerfeed_add'),
     path('power-feeds/import/', views.PowerFeedBulkImportView.as_view(), name='powerfeed_import'),
     path('power-feeds/edit/', views.PowerFeedBulkEditView.as_view(), name='powerfeed_bulk_edit'),
+    path('power-feeds/disconnect/', views.PowerFeedBulkDisconnectView.as_view(), name='powerfeed_bulk_disconnect'),
     path('power-feeds/delete/', views.PowerFeedBulkDeleteView.as_view(), name='powerfeed_bulk_delete'),
     path('power-feeds/<int:pk>/', views.PowerFeedView.as_view(), name='powerfeed'),
     path('power-feeds/<int:pk>/edit/', views.PowerFeedEditView.as_view(), name='powerfeed_edit'),

+ 6 - 0
netbox/dcim/views.py

@@ -2836,6 +2836,8 @@ class PowerPanelView(generic.ObjectView):
             data=power_feeds,
             orderable=False
         )
+        if request.user.has_perm('dcim.delete_cable'):
+            powerfeed_table.columns.show('pk')
         powerfeed_table.exclude = ['power_panel']
 
         return {
@@ -2912,6 +2914,10 @@ class PowerFeedBulkEditView(generic.BulkEditView):
     form = forms.PowerFeedBulkEditForm
 
 
+class PowerFeedBulkDisconnectView(BulkDisconnectView):
+    queryset = PowerFeed.objects.all()
+
+
 class PowerFeedBulkDeleteView(generic.BulkDeleteView):
     queryset = PowerFeed.objects.prefetch_related('power_panel', 'rack')
     filterset = filters.PowerFeedFilterSet

+ 32 - 1
netbox/templates/dcim/powerpanel.html

@@ -1,6 +1,7 @@
 {% extends 'generic/object.html' %}
 {% load helpers %}
 {% load plugins %}
+{% load render_table from django_tables2 %}
 
 {% block breadcrumbs %}
   <li><a href="{% url 'dcim:powerpanel_list' %}">Power Panels</a></li>
@@ -47,7 +48,37 @@
 </div>
 <div class="row">
     <div class="col-md-12">
-        {% include 'panel_table.html' with table=powerfeed_table heading='Connected Feeds' %}
+        <form method="post">
+            {% csrf_token %}
+            <div class="panel panel-default">
+                {% render_table powerfeed_table 'inc/table.html' %}
+                <div class="panel-footer noprint">
+                    {% if perms.dcim.change_powerfeed %}
+                        <button type="submit" name="_edit" formaction="{% url 'dcim:powerfeed_bulk_edit' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-warning btn-xs">
+                            <span class="mdi mdi-pencil" aria-hidden="true"></span> Edit
+                        </button>
+                    {% endif %}
+                    {% if perms.dcim.delete_cable %}
+                        <button type="submit" name="_disconnect" formaction="{% url 'dcim:powerfeed_bulk_disconnect' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-danger btn-xs">
+                            <span class="mdi mdi-ethernet-cable-off" aria-hidden="true"></span> Disconnect
+                        </button>
+                    {% endif %}
+                    {% if perms.dcim.delete_powerfeed %}
+                        <button type="submit" name="_delete" formaction="{% url 'dcim:powerfeed_bulk_delete' %}?return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-danger btn-xs">
+                            <span class="mdi mdi-trash-can-outline" aria-hidden="true"></span> Delete
+                        </button>
+                    {% endif %}
+                    {% if perms.dcim.add_powerfeed %}
+                        <div class="pull-right">
+                            <a href="{% url 'dcim:powerfeed_add' %}?power_panel={{ object.pk }}&return_url={% url 'dcim:powerpanel' pk=object.pk %}" class="btn btn-primary btn-xs">
+                                <span class="mdi mdi-plus-thick" aria-hidden="true"></span> Add power feeds
+                            </a>
+                        </div>
+                    {% endif %}
+                    <div class="clearfix"></div>
+                 </div>
+            </div>
+        </form>
         {% plugin_full_width_page object %}
     </div>
 </div>