Closes #4795: Add bulk disconnect capability for console and power ports

This commit is contained in:
Jeremy Stretch
2020-06-25 17:08:51 -04:00
parent 128327b8a3
commit 319799b5ce
5 changed files with 30 additions and 44 deletions

View File

@@ -6,7 +6,7 @@ from django.contrib.contenttypes.models import ContentType
from django.core.paginator import EmptyPage, PageNotAnInteger
from django.db import transaction
from django.db.models import Count, F
from django.forms import modelformset_factory
from django.forms import ModelMultipleChoiceField, MultipleHiddenInput, modelformset_factory
from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse
from django.utils.html import escape
@@ -46,9 +46,20 @@ class BulkDisconnectView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View)
An extendable view for disconnection console/power/interface components in bulk.
"""
queryset = None
form = None
template_name = 'dcim/bulk_disconnect.html'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Create a new Form class from ConfirmationForm
class _Form(ConfirmationForm):
pk = ModelMultipleChoiceField(
queryset=self.queryset,
widget=MultipleHiddenInput()
)
self.form = _Form
def get_required_permission(self):
return get_permission_for_model(self.queryset.model, 'change')
@@ -1203,6 +1214,10 @@ class ConsolePortBulkRenameView(BulkRenameView):
queryset = ConsolePort.objects.all()
class ConsolePortBulkDisconnectView(BulkDisconnectView):
queryset = ConsolePort.objects.all()
class ConsolePortBulkDeleteView(BulkDeleteView):
queryset = ConsolePort.objects.all()
filterset = filters.ConsolePortFilterSet
@@ -1262,7 +1277,6 @@ class ConsoleServerPortBulkRenameView(BulkRenameView):
class ConsoleServerPortBulkDisconnectView(BulkDisconnectView):
queryset = ConsoleServerPort.objects.all()
form = forms.ConsoleServerPortBulkDisconnectForm
class ConsoleServerPortBulkDeleteView(BulkDeleteView):
@@ -1322,6 +1336,10 @@ class PowerPortBulkRenameView(BulkRenameView):
queryset = PowerPort.objects.all()
class PowerPortBulkDisconnectView(BulkDisconnectView):
queryset = PowerPort.objects.all()
class PowerPortBulkDeleteView(BulkDeleteView):
queryset = PowerPort.objects.all()
filterset = filters.PowerPortFilterSet
@@ -1381,7 +1399,6 @@ class PowerOutletBulkRenameView(BulkRenameView):
class PowerOutletBulkDisconnectView(BulkDisconnectView):
queryset = PowerOutlet.objects.all()
form = forms.PowerOutletBulkDisconnectForm
class PowerOutletBulkDeleteView(BulkDeleteView):
@@ -1476,7 +1493,6 @@ class InterfaceBulkRenameView(BulkRenameView):
class InterfaceBulkDisconnectView(BulkDisconnectView):
queryset = Interface.objects.all()
form = forms.InterfaceBulkDisconnectForm
class InterfaceBulkDeleteView(BulkDeleteView):
@@ -1538,7 +1554,6 @@ class FrontPortBulkRenameView(BulkRenameView):
class FrontPortBulkDisconnectView(BulkDisconnectView):
queryset = FrontPort.objects.all()
form = forms.FrontPortBulkDisconnectForm
class FrontPortBulkDeleteView(BulkDeleteView):
@@ -1600,7 +1615,6 @@ class RearPortBulkRenameView(BulkRenameView):
class RearPortBulkDisconnectView(BulkDisconnectView):
queryset = RearPort.objects.all()
form = forms.RearPortBulkDisconnectForm
class RearPortBulkDeleteView(BulkDeleteView):