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

Transition BulkImportView to use ObjectPermissionRequiredMixin

Jeremy Stretch 5 лет назад
Родитель
Сommit
5e5038d780

+ 3 - 6
netbox/circuits/views.py

@@ -71,8 +71,7 @@ class ProviderDeleteView(ObjectDeleteView):
     default_return_url = 'circuits:provider_list'
 
 
-class ProviderBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'circuits.add_provider'
+class ProviderBulkImportView(BulkImportView):
     queryset = Provider.objects.all()
     model_form = forms.ProviderCSVForm
     table = tables.ProviderTable
@@ -111,8 +110,7 @@ class CircuitTypeEditView(ObjectEditView):
     default_return_url = 'circuits:circuittype_list'
 
 
-class CircuitTypeBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'circuits.add_circuittype'
+class CircuitTypeBulkImportView(BulkImportView):
     queryset = CircuitType.objects.all()
     model_form = forms.CircuitTypeCSVForm
     table = tables.CircuitTypeTable
@@ -176,8 +174,7 @@ class CircuitDeleteView(ObjectDeleteView):
     default_return_url = 'circuits:circuit_list'
 
 
-class CircuitBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'circuits.add_circuit'
+class CircuitBulkImportView(BulkImportView):
     queryset = Circuit.objects.all()
     model_form = forms.CircuitCSVForm
     table = tables.CircuitTable

+ 23 - 46
netbox/dcim/views.py

@@ -160,8 +160,7 @@ class RegionEditView(ObjectEditView):
     default_return_url = 'dcim:region_list'
 
 
-class RegionBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_region'
+class RegionBulkImportView(BulkImportView):
     queryset = Region.objects.all()
     model_form = forms.RegionCSVForm
     table = tables.RegionTable
@@ -225,8 +224,7 @@ class SiteDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:site_list'
 
 
-class SiteBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_site'
+class SiteBulkImportView(BulkImportView):
     queryset = Site.objects.all()
     model_form = forms.SiteCSVForm
     table = tables.SiteTable
@@ -273,8 +271,7 @@ class RackGroupEditView(ObjectEditView):
     default_return_url = 'dcim:rackgroup_list'
 
 
-class RackGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_rackgroup'
+class RackGroupBulkImportView(BulkImportView):
     queryset = RackGroup.objects.all()
     model_form = forms.RackGroupCSVForm
     table = tables.RackGroupTable
@@ -304,8 +301,7 @@ class RackRoleEditView(ObjectEditView):
     default_return_url = 'dcim:rackrole_list'
 
 
-class RackRoleBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_rackrole'
+class RackRoleBulkImportView(BulkImportView):
     queryset = RackRole.objects.all()
     model_form = forms.RackRoleCSVForm
     table = tables.RackRoleTable
@@ -415,8 +411,7 @@ class RackDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:rack_list'
 
 
-class RackBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_rack'
+class RackBulkImportView(BulkImportView):
     queryset = Rack.objects.all()
     model_form = forms.RackCSVForm
     table = tables.RackTable
@@ -483,8 +478,7 @@ class RackReservationDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:rackreservation_list'
 
 
-class RackReservationImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_rackreservation'
+class RackReservationImportView(BulkImportView):
     queryset = RackReservation.objects.all()
     model_form = forms.RackReservationCSVForm
     table = tables.RackReservationTable
@@ -537,8 +531,7 @@ class ManufacturerEditView(ObjectEditView):
     default_return_url = 'dcim:manufacturer_list'
 
 
-class ManufacturerBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_manufacturer'
+class ManufacturerBulkImportView(BulkImportView):
     queryset = Manufacturer.objects.all()
     model_form = forms.ManufacturerCSVForm
     table = tables.ManufacturerTable
@@ -969,8 +962,7 @@ class DeviceRoleEditView(ObjectEditView):
     default_return_url = 'dcim:devicerole_list'
 
 
-class DeviceRoleBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_devicerole'
+class DeviceRoleBulkImportView(BulkImportView):
     queryset = DeviceRole.objects.all()
     model_form = forms.DeviceRoleCSVForm
     table = tables.DeviceRoleTable
@@ -999,8 +991,7 @@ class PlatformEditView(ObjectEditView):
     default_return_url = 'dcim:platform_list'
 
 
-class PlatformBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_platform'
+class PlatformBulkImportView(BulkImportView):
     queryset = Platform.objects.all()
     model_form = forms.PlatformCSVForm
     table = tables.PlatformTable
@@ -1186,8 +1177,7 @@ class DeviceDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:device_list'
 
 
-class DeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_device'
+class DeviceBulkImportView(BulkImportView):
     queryset = Device.objects.all()
     model_form = forms.DeviceCSVForm
     table = tables.DeviceImportTable
@@ -1195,8 +1185,7 @@ class DeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
     default_return_url = 'dcim:device_list'
 
 
-class ChildDeviceBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_device'
+class ChildDeviceBulkImportView(BulkImportView):
     queryset = Device.objects.all()
     model_form = forms.ChildDeviceCSVForm
     table = tables.DeviceImportTable
@@ -1261,8 +1250,7 @@ class ConsolePortDeleteView(ObjectDeleteView):
     queryset = ConsolePort.objects.all()
 
 
-class ConsolePortBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_consoleport'
+class ConsolePortBulkImportView(BulkImportView):
     queryset = ConsolePort.objects.all()
     model_form = forms.ConsolePortCSVForm
     table = tables.ConsolePortImportTable
@@ -1314,8 +1302,7 @@ class ConsoleServerPortDeleteView(ObjectDeleteView):
     queryset = ConsoleServerPort.objects.all()
 
 
-class ConsoleServerPortBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_consoleserverport'
+class ConsoleServerPortBulkImportView(BulkImportView):
     queryset = ConsoleServerPort.objects.all()
     model_form = forms.ConsoleServerPortCSVForm
     table = tables.ConsoleServerPortImportTable
@@ -1379,8 +1366,7 @@ class PowerPortDeleteView(ObjectDeleteView):
     queryset = PowerPort.objects.all()
 
 
-class PowerPortBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_powerport'
+class PowerPortBulkImportView(BulkImportView):
     queryset = PowerPort.objects.all()
     model_form = forms.PowerPortCSVForm
     table = tables.PowerPortImportTable
@@ -1432,8 +1418,7 @@ class PowerOutletDeleteView(ObjectDeleteView):
     queryset = PowerOutlet.objects.all()
 
 
-class PowerOutletBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_poweroutlet'
+class PowerOutletBulkImportView(BulkImportView):
     queryset = PowerOutlet.objects.all()
     model_form = forms.PowerOutletCSVForm
     table = tables.PowerOutletImportTable
@@ -1534,8 +1519,7 @@ class InterfaceDeleteView(ObjectDeleteView):
     queryset = Interface.objects.all()
 
 
-class InterfaceBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_interface'
+class InterfaceBulkImportView(BulkImportView):
     queryset = Interface.objects.all()
     model_form = forms.InterfaceCSVForm
     table = tables.InterfaceImportTable
@@ -1599,8 +1583,7 @@ class FrontPortDeleteView(ObjectDeleteView):
     queryset = FrontPort.objects.all()
 
 
-class FrontPortBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_frontport'
+class FrontPortBulkImportView(BulkImportView):
     queryset = FrontPort.objects.all()
     model_form = forms.FrontPortCSVForm
     table = tables.FrontPortImportTable
@@ -1664,8 +1647,7 @@ class RearPortDeleteView(ObjectDeleteView):
     queryset = RearPort.objects.all()
 
 
-class RearPortBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_rearport'
+class RearPortBulkImportView(BulkImportView):
     queryset = RearPort.objects.all()
     model_form = forms.RearPortCSVForm
     table = tables.RearPortImportTable
@@ -1800,8 +1782,7 @@ class DeviceBayDepopulateView(PermissionRequiredMixin, View):
         })
 
 
-class DeviceBayBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_devicebay'
+class DeviceBayBulkImportView(BulkImportView):
     queryset = DeviceBay.objects.all()
     model_form = forms.DeviceBayCSVForm
     table = tables.DeviceBayImportTable
@@ -2072,8 +2053,7 @@ class CableDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:cable_list'
 
 
-class CableBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_cable'
+class CableBulkImportView(BulkImportView):
     queryset = Cable.objects.all()
     model_form = forms.CableCSVForm
     table = tables.CableTable
@@ -2229,8 +2209,7 @@ class InventoryItemDeleteView(ObjectDeleteView):
     queryset = InventoryItem.objects.all()
 
 
-class InventoryItemBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_inventoryitem'
+class InventoryItemBulkImportView(BulkImportView):
     queryset = InventoryItem.objects.all()
     model_form = forms.InventoryItemCSVForm
     table = tables.InventoryItemTable
@@ -2564,8 +2543,7 @@ class PowerPanelDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:powerpanel_list'
 
 
-class PowerPanelBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_powerpanel'
+class PowerPanelBulkImportView(BulkImportView):
     queryset = PowerPanel.objects.all()
     model_form = forms.PowerPanelCSVForm
     table = tables.PowerPanelTable
@@ -2630,8 +2608,7 @@ class PowerFeedDeleteView(ObjectDeleteView):
     default_return_url = 'dcim:powerfeed_list'
 
 
-class PowerFeedBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'dcim.add_powerfeed'
+class PowerFeedBulkImportView(BulkImportView):
     queryset = PowerFeed.objects.all()
     model_form = forms.PowerFeedCSVForm
     table = tables.PowerFeedTable

+ 9 - 18
netbox/ipam/views.py

@@ -146,8 +146,7 @@ class VRFDeleteView(ObjectDeleteView):
     default_return_url = 'ipam:vrf_list'
 
 
-class VRFBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_vrf'
+class VRFBulkImportView(BulkImportView):
     queryset = VRF.objects.all()
     model_form = forms.VRFCSVForm
     table = tables.VRFTable
@@ -257,8 +256,7 @@ class RIREditView(ObjectEditView):
     default_return_url = 'ipam:rir_list'
 
 
-class RIRBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_rir'
+class RIRBulkImportView(BulkImportView):
     queryset = RIR.objects.all()
     model_form = forms.RIRCSVForm
     table = tables.RIRTable
@@ -360,8 +358,7 @@ class AggregateDeleteView(ObjectDeleteView):
     default_return_url = 'ipam:aggregate_list'
 
 
-class AggregateBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_aggregate'
+class AggregateBulkImportView(BulkImportView):
     queryset = Aggregate.objects.all()
     model_form = forms.AggregateCSVForm
     table = tables.AggregateTable
@@ -400,8 +397,7 @@ class RoleEditView(ObjectEditView):
     default_return_url = 'ipam:role_list'
 
 
-class RoleBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_role'
+class RoleBulkImportView(BulkImportView):
     queryset = Role.objects.all()
     model_form = forms.RoleCSVForm
     table = tables.RoleTable
@@ -576,8 +572,7 @@ class PrefixDeleteView(ObjectDeleteView):
     default_return_url = 'ipam:prefix_list'
 
 
-class PrefixBulkImportView(ObjectPermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_prefix'
+class PrefixBulkImportView(BulkImportView):
     queryset = Prefix.objects.all()
     model_form = forms.PrefixCSVForm
     table = tables.PrefixTable
@@ -744,8 +739,7 @@ class IPAddressBulkCreateView(PermissionRequiredMixin, BulkCreateView):
     default_return_url = 'ipam:ipaddress_list'
 
 
-class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_ipaddress'
+class IPAddressBulkImportView(BulkImportView):
     queryset = IPAddress.objects.all()
     model_form = forms.IPAddressCSVForm
     table = tables.IPAddressTable
@@ -787,8 +781,7 @@ class VLANGroupEditView(ObjectEditView):
     default_return_url = 'ipam:vlangroup_list'
 
 
-class VLANGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_vlangroup'
+class VLANGroupBulkImportView(BulkImportView):
     queryset = VLANGroup.objects.all()
     model_form = forms.VLANGroupCSVForm
     table = tables.VLANGroupTable
@@ -904,8 +897,7 @@ class VLANDeleteView(ObjectDeleteView):
     default_return_url = 'ipam:vlan_list'
 
 
-class VLANBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_vlan'
+class VLANBulkImportView(BulkImportView):
     queryset = VLAN.objects.all()
     model_form = forms.VLANCSVForm
     table = tables.VLANTable
@@ -969,8 +961,7 @@ class ServiceEditView(ObjectEditView):
         return service.parent.get_absolute_url()
 
 
-class ServiceBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'ipam.add_service'
+class ServiceBulkImportView(BulkImportView):
     queryset = Service.objects.all()
     model_form = forms.ServiceCSVForm
     table = tables.ServiceTable

+ 1 - 3
netbox/secrets/views.py

@@ -41,8 +41,7 @@ class SecretRoleEditView(ObjectEditView):
     default_return_url = 'secrets:secretrole_list'
 
 
-class SecretRoleBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'secrets.add_secretrole'
+class SecretRoleBulkImportView(BulkImportView):
     queryset = SecretRole.objects.all()
     model_form = forms.SecretRoleCSVForm
     table = tables.SecretRoleTable
@@ -189,7 +188,6 @@ class SecretDeleteView(ObjectDeleteView):
 
 
 class SecretBulkImportView(BulkImportView):
-    permission_required = 'secrets.add_secret'
     queryset = Secret.objects.all()
     model_form = forms.SecretCSVForm
     table = tables.SecretTable

+ 2 - 4
netbox/tenancy/views.py

@@ -35,8 +35,7 @@ class TenantGroupEditView(ObjectEditView):
     default_return_url = 'tenancy:tenantgroup_list'
 
 
-class TenantGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'tenancy.add_tenantgroup'
+class TenantGroupBulkImportView(BulkImportView):
     queryset = TenantGroup.objects.all()
     model_form = forms.TenantGroupCSVForm
     table = tables.TenantGroupTable
@@ -99,8 +98,7 @@ class TenantDeleteView(ObjectDeleteView):
     default_return_url = 'tenancy:tenant_list'
 
 
-class TenantBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'tenancy.add_tenant'
+class TenantBulkImportView(BulkImportView):
     queryset = Tenant.objects.all()
     model_form = forms.TenantCSVForm
     table = tables.TenantTable

+ 4 - 1
netbox/utilities/views.py

@@ -652,7 +652,7 @@ class ObjectImportView(GetReturnURLMixin, View):
         })
 
 
-class BulkImportView(GetReturnURLMixin, View):
+class BulkImportView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
     """
     Import objects in bulk (CSV format).
 
@@ -684,6 +684,9 @@ class BulkImportView(GetReturnURLMixin, View):
         """
         return obj_form.save()
 
+    def get_required_permission(self):
+        return get_permission_for_model(self.queryset.model, 'add')
+
     def get(self, request):
 
         return render(request, self.template_name, {

+ 4 - 8
netbox/virtualization/views.py

@@ -33,8 +33,7 @@ class ClusterTypeEditView(ObjectEditView):
     default_return_url = 'virtualization:clustertype_list'
 
 
-class ClusterTypeBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'virtualization.add_clustertype'
+class ClusterTypeBulkImportView(BulkImportView):
     queryset = ClusterType.objects.all()
     model_form = forms.ClusterTypeCSVForm
     table = tables.ClusterTypeTable
@@ -63,8 +62,7 @@ class ClusterGroupEditView(ObjectEditView):
     default_return_url = 'virtualization:clustergroup_list'
 
 
-class ClusterGroupBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'virtualization.add_clustergroup'
+class ClusterGroupBulkImportView(BulkImportView):
     queryset = ClusterGroup.objects.all()
     model_form = forms.ClusterGroupCSVForm
     table = tables.ClusterGroupTable
@@ -119,8 +117,7 @@ class ClusterDeleteView(ObjectDeleteView):
     default_return_url = 'virtualization:cluster_list'
 
 
-class ClusterBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'virtualization.add_cluster'
+class ClusterBulkImportView(BulkImportView):
     queryset = Cluster.objects.all()
     model_form = forms.ClusterCSVForm
     table = tables.ClusterTable
@@ -274,8 +271,7 @@ class VirtualMachineDeleteView(ObjectDeleteView):
     default_return_url = 'virtualization:virtualmachine_list'
 
 
-class VirtualMachineBulkImportView(PermissionRequiredMixin, BulkImportView):
-    permission_required = 'virtualization.add_virtualmachine'
+class VirtualMachineBulkImportView(BulkImportView):
     queryset = VirtualMachine.objects.all()
     model_form = forms.VirtualMachineCSVForm
     table = tables.VirtualMachineTable