mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 09:28:38 -06:00
Transition BulkRenameView, BulkDisconnectView to use ObjectPermissionRequiredMixin
This commit is contained in:
parent
af8e1a6472
commit
49b780358e
@ -23,6 +23,7 @@ from ipam.models import Prefix, VLAN
|
|||||||
from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable
|
from ipam.tables import InterfaceIPAddressTable, InterfaceVLANTable
|
||||||
from utilities.forms import ConfirmationForm
|
from utilities.forms import ConfirmationForm
|
||||||
from utilities.paginator import EnhancedPaginator
|
from utilities.paginator import EnhancedPaginator
|
||||||
|
from utilities.permissions import get_permission_for_model
|
||||||
from utilities.utils import csv_format
|
from utilities.utils import csv_format
|
||||||
from utilities.views import (
|
from utilities.views import (
|
||||||
BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, GetReturnURLMixin,
|
BulkComponentCreateView, BulkDeleteView, BulkEditView, BulkImportView, ComponentCreateView, GetReturnURLMixin,
|
||||||
@ -41,7 +42,7 @@ from .models import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class BulkRenameView(GetReturnURLMixin, View):
|
class BulkRenameView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
||||||
"""
|
"""
|
||||||
An extendable view for renaming device components in bulk.
|
An extendable view for renaming device components in bulk.
|
||||||
"""
|
"""
|
||||||
@ -49,9 +50,10 @@ class BulkRenameView(GetReturnURLMixin, View):
|
|||||||
form = None
|
form = None
|
||||||
template_name = 'dcim/bulk_rename.html'
|
template_name = 'dcim/bulk_rename.html'
|
||||||
|
|
||||||
def post(self, request):
|
def get_required_permission(self):
|
||||||
|
return get_permission_for_model(self.queryset.model, 'change')
|
||||||
|
|
||||||
model = self.queryset.model
|
def post(self, request):
|
||||||
|
|
||||||
if '_preview' in request.POST or '_apply' in request.POST:
|
if '_preview' in request.POST or '_apply' in request.POST:
|
||||||
form = self.form(request.POST, initial={'pk': request.POST.getlist('pk')})
|
form = self.form(request.POST, initial={'pk': request.POST.getlist('pk')})
|
||||||
@ -76,7 +78,7 @@ class BulkRenameView(GetReturnURLMixin, View):
|
|||||||
obj.save()
|
obj.save()
|
||||||
messages.success(request, "Renamed {} {}".format(
|
messages.success(request, "Renamed {} {}".format(
|
||||||
len(selected_objects),
|
len(selected_objects),
|
||||||
model._meta.verbose_name_plural
|
self.queryset.model._meta.verbose_name_plural
|
||||||
))
|
))
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
|
||||||
@ -86,7 +88,7 @@ class BulkRenameView(GetReturnURLMixin, View):
|
|||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
'form': form,
|
'form': form,
|
||||||
'obj_type_plural': model._meta.verbose_name_plural,
|
'obj_type_plural': self.queryset.model._meta.verbose_name_plural,
|
||||||
'selected_objects': selected_objects,
|
'selected_objects': selected_objects,
|
||||||
'return_url': self.get_return_url(request),
|
'return_url': self.get_return_url(request),
|
||||||
})
|
})
|
||||||
@ -96,10 +98,13 @@ class BulkDisconnectView(GetReturnURLMixin, View):
|
|||||||
"""
|
"""
|
||||||
An extendable view for disconnection console/power/interface components in bulk.
|
An extendable view for disconnection console/power/interface components in bulk.
|
||||||
"""
|
"""
|
||||||
model = None
|
queryset = None
|
||||||
form = None
|
form = None
|
||||||
template_name = 'dcim/bulk_disconnect.html'
|
template_name = 'dcim/bulk_disconnect.html'
|
||||||
|
|
||||||
|
def get_required_permission(self):
|
||||||
|
return get_permission_for_model(self.queryset.model, 'change')
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
|
|
||||||
selected_objects = []
|
selected_objects = []
|
||||||
@ -113,25 +118,25 @@ class BulkDisconnectView(GetReturnURLMixin, View):
|
|||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
for obj in self.model.objects.filter(pk__in=form.cleaned_data['pk']):
|
for obj in self.queryset.filter(pk__in=form.cleaned_data['pk']):
|
||||||
if obj.cable is None:
|
if obj.cable is None:
|
||||||
continue
|
continue
|
||||||
obj.cable.delete()
|
obj.cable.delete()
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
messages.success(request, "Disconnected {} {}".format(
|
messages.success(request, "Disconnected {} {}".format(
|
||||||
count, self.model._meta.verbose_name_plural
|
count, self.queryset.model._meta.verbose_name_plural
|
||||||
))
|
))
|
||||||
|
|
||||||
return redirect(return_url)
|
return redirect(return_url)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
form = self.form(initial={'pk': request.POST.getlist('pk')})
|
form = self.form(initial={'pk': request.POST.getlist('pk')})
|
||||||
selected_objects = self.model.objects.filter(pk__in=form.initial['pk'])
|
selected_objects = self.queryset.filter(pk__in=form.initial['pk'])
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
'form': form,
|
'form': form,
|
||||||
'obj_type_plural': self.model._meta.verbose_name_plural,
|
'obj_type_plural': self.queryset.model._meta.verbose_name_plural,
|
||||||
'selected_objects': selected_objects,
|
'selected_objects': selected_objects,
|
||||||
'return_url': return_url,
|
'return_url': return_url,
|
||||||
})
|
})
|
||||||
@ -1285,15 +1290,13 @@ class ConsoleServerPortBulkEditView(BulkEditView):
|
|||||||
form = forms.ConsoleServerPortBulkEditForm
|
form = forms.ConsoleServerPortBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortBulkRenameView(PermissionRequiredMixin, BulkRenameView):
|
class ConsoleServerPortBulkRenameView(BulkRenameView):
|
||||||
permission_required = 'dcim.change_consoleserverport'
|
|
||||||
queryset = ConsoleServerPort.objects.all()
|
queryset = ConsoleServerPort.objects.all()
|
||||||
form = forms.ConsoleServerPortBulkRenameForm
|
form = forms.ConsoleServerPortBulkRenameForm
|
||||||
|
|
||||||
|
|
||||||
class ConsoleServerPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
|
class ConsoleServerPortBulkDisconnectView(BulkDisconnectView):
|
||||||
permission_required = 'dcim.change_consoleserverport'
|
queryset = ConsoleServerPort.objects.all()
|
||||||
model = ConsoleServerPort
|
|
||||||
form = forms.ConsoleServerPortBulkDisconnectForm
|
form = forms.ConsoleServerPortBulkDisconnectForm
|
||||||
|
|
||||||
|
|
||||||
@ -1397,15 +1400,13 @@ class PowerOutletBulkEditView(BulkEditView):
|
|||||||
form = forms.PowerOutletBulkEditForm
|
form = forms.PowerOutletBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class PowerOutletBulkRenameView(PermissionRequiredMixin, BulkRenameView):
|
class PowerOutletBulkRenameView(BulkRenameView):
|
||||||
permission_required = 'dcim.change_poweroutlet'
|
|
||||||
queryset = PowerOutlet.objects.all()
|
queryset = PowerOutlet.objects.all()
|
||||||
form = forms.PowerOutletBulkRenameForm
|
form = forms.PowerOutletBulkRenameForm
|
||||||
|
|
||||||
|
|
||||||
class PowerOutletBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
|
class PowerOutletBulkDisconnectView(BulkDisconnectView):
|
||||||
permission_required = 'dcim.change_poweroutlet'
|
queryset = PowerOutlet.objects.all()
|
||||||
model = PowerOutlet
|
|
||||||
form = forms.PowerOutletBulkDisconnectForm
|
form = forms.PowerOutletBulkDisconnectForm
|
||||||
|
|
||||||
|
|
||||||
@ -1496,15 +1497,13 @@ class InterfaceBulkEditView(BulkEditView):
|
|||||||
form = forms.InterfaceBulkEditForm
|
form = forms.InterfaceBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class InterfaceBulkRenameView(PermissionRequiredMixin, BulkRenameView):
|
class InterfaceBulkRenameView(BulkRenameView):
|
||||||
permission_required = 'dcim.change_interface'
|
|
||||||
queryset = Interface.objects.all()
|
queryset = Interface.objects.all()
|
||||||
form = forms.InterfaceBulkRenameForm
|
form = forms.InterfaceBulkRenameForm
|
||||||
|
|
||||||
|
|
||||||
class InterfaceBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
|
class InterfaceBulkDisconnectView(BulkDisconnectView):
|
||||||
permission_required = 'dcim.change_interface'
|
queryset = Interface.objects.all()
|
||||||
model = Interface
|
|
||||||
form = forms.InterfaceBulkDisconnectForm
|
form = forms.InterfaceBulkDisconnectForm
|
||||||
|
|
||||||
|
|
||||||
@ -1558,15 +1557,13 @@ class FrontPortBulkEditView(BulkEditView):
|
|||||||
form = forms.FrontPortBulkEditForm
|
form = forms.FrontPortBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class FrontPortBulkRenameView(PermissionRequiredMixin, BulkRenameView):
|
class FrontPortBulkRenameView(BulkRenameView):
|
||||||
permission_required = 'dcim.change_frontport'
|
|
||||||
queryset = FrontPort.objects.all()
|
queryset = FrontPort.objects.all()
|
||||||
form = forms.FrontPortBulkRenameForm
|
form = forms.FrontPortBulkRenameForm
|
||||||
|
|
||||||
|
|
||||||
class FrontPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
|
class FrontPortBulkDisconnectView(BulkDisconnectView):
|
||||||
permission_required = 'dcim.change_frontport'
|
queryset = FrontPort.objects.all()
|
||||||
model = FrontPort
|
|
||||||
form = forms.FrontPortBulkDisconnectForm
|
form = forms.FrontPortBulkDisconnectForm
|
||||||
|
|
||||||
|
|
||||||
@ -1620,15 +1617,13 @@ class RearPortBulkEditView(BulkEditView):
|
|||||||
form = forms.RearPortBulkEditForm
|
form = forms.RearPortBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class RearPortBulkRenameView(PermissionRequiredMixin, BulkRenameView):
|
class RearPortBulkRenameView(BulkRenameView):
|
||||||
permission_required = 'dcim.change_rearport'
|
|
||||||
queryset = RearPort.objects.all()
|
queryset = RearPort.objects.all()
|
||||||
form = forms.RearPortBulkRenameForm
|
form = forms.RearPortBulkRenameForm
|
||||||
|
|
||||||
|
|
||||||
class RearPortBulkDisconnectView(PermissionRequiredMixin, BulkDisconnectView):
|
class RearPortBulkDisconnectView(BulkDisconnectView):
|
||||||
permission_required = 'dcim.change_rearport'
|
queryset = RearPort.objects.all()
|
||||||
model = RearPort
|
|
||||||
form = forms.RearPortBulkDisconnectForm
|
form = forms.RearPortBulkDisconnectForm
|
||||||
|
|
||||||
|
|
||||||
@ -1753,8 +1748,7 @@ class DeviceBayBulkEditView(BulkEditView):
|
|||||||
form = forms.DeviceBayBulkEditForm
|
form = forms.DeviceBayBulkEditForm
|
||||||
|
|
||||||
|
|
||||||
class DeviceBayBulkRenameView(PermissionRequiredMixin, BulkRenameView):
|
class DeviceBayBulkRenameView(BulkRenameView):
|
||||||
permission_required = 'dcim.change_devicebay'
|
|
||||||
queryset = DeviceBay.objects.all()
|
queryset = DeviceBay.objects.all()
|
||||||
form = forms.DeviceBayBulkRenameForm
|
form = forms.DeviceBayBulkRenameForm
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user