diff --git a/netbox/circuits/views.py b/netbox/circuits/views.py
index d7895289e..fd2b84bd4 100644
--- a/netbox/circuits/views.py
+++ b/netbox/circuits/views.py
@@ -88,7 +88,6 @@ class ProviderBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'circuits.delete_provider'
cls = Provider
form = ProviderBulkDeleteForm
- template_name = 'circuits/provider_bulk_delete.html'
default_redirect_url = 'circuits:provider_list'
@@ -168,5 +167,4 @@ class CircuitBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'circuits.delete_circuit'
cls = Circuit
form = CircuitBulkDeleteForm
- template_name = 'circuits/circuit_bulk_delete.html'
default_redirect_url = 'circuits:circuit_list'
diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py
index d43a5b9d4..fca0b7451 100644
--- a/netbox/dcim/views.py
+++ b/netbox/dcim/views.py
@@ -11,7 +11,6 @@ from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect, render
from django.utils.http import urlencode
from django.views.generic import View
-from django.views.generic.edit import CreateView, UpdateView
from ipam.models import Prefix, IPAddress, VLAN
from circuits.models import Circuit
@@ -163,7 +162,6 @@ class RackGroupBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'dcim.delete_rackgroup'
cls = RackGroup
form = RackGroupBulkDeleteForm
- template_name = 'dcim/rackgroup_bulk_delete.html'
default_redirect_url = 'dcim:rackgroup_list'
@@ -251,7 +249,6 @@ class RackBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'dcim.delete_rack'
cls = Rack
form = RackBulkDeleteForm
- template_name = 'dcim/rack_bulk_delete.html'
default_redirect_url = 'dcim:rack_list'
@@ -341,7 +338,6 @@ class DeviceTypeBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'dcim.delete_devicetype'
cls = DeviceType
form = DeviceTypeBulkDeleteForm
- template_name = 'dcim/devicetype_bulk_delete.html'
default_redirect_url = 'dcim:devicetype_list'
@@ -581,7 +577,6 @@ class DeviceBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'dcim.delete_device'
cls = Device
form = DeviceBulkDeleteForm
- template_name = 'dcim/device_bulk_delete.html'
default_redirect_url = 'dcim:device_list'
diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py
index f4d11479f..e8fccbd9e 100644
--- a/netbox/ipam/views.py
+++ b/netbox/ipam/views.py
@@ -3,17 +3,10 @@ from netaddr import IPSet
from django_tables2 import RequestConfig
from django.conf import settings
from django.contrib import messages
-from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.core.urlresolvers import reverse
-from django.db.models import ProtectedError
-from django.http import HttpResponseRedirect
-from django.shortcuts import get_object_or_404, redirect, render
-from django.utils.http import urlencode
+from django.shortcuts import get_object_or_404, render
from dcim.models import Device
-from utilities.error_handlers import handle_protectederror
-from utilities.forms import ConfirmationForm
from utilities.paginator import EnhancedPaginator
from utilities.views import BulkImportView, BulkEditView, BulkDeleteView, ObjectListView, ObjectAddView,\
ObjectEditView, ObjectDeleteView
@@ -122,7 +115,6 @@ class VRFBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'ipam.delete_vrf'
cls = VRF
form = VRFBulkDeleteForm
- template_name = 'ipam/vrf_bulk_delete.html'
default_redirect_url = 'ipam:vrf_list'
@@ -216,7 +208,6 @@ class AggregateBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'ipam.delete_aggregate'
cls = Aggregate
form = AggregateBulkDeleteForm
- template_name = 'ipam/aggregate_bulk_delete.html'
default_redirect_url = 'ipam:aggregate_list'
@@ -340,7 +331,6 @@ class PrefixBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'ipam.delete_prefix'
cls = Prefix
form = PrefixBulkDeleteForm
- template_name = 'ipam/prefix_bulk_delete.html'
default_redirect_url = 'ipam:prefix_list'
@@ -463,7 +453,6 @@ class IPAddressBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'ipam.delete_ipaddress'
cls = IPAddress
form = IPAddressBulkDeleteForm
- template_name = 'ipam/ipaddress_bulk_delete.html'
default_redirect_url = 'ipam:ipaddress_list'
@@ -544,5 +533,4 @@ class VLANBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'ipam.delete_vlan'
cls = VLAN
form = VLANBulkDeleteForm
- template_name = 'ipam/vlan_bulk_delete.html'
default_redirect_url = 'ipam:vlan_list'
diff --git a/netbox/secrets/views.py b/netbox/secrets/views.py
index 1643a9f36..16dd06325 100644
--- a/netbox/secrets/views.py
+++ b/netbox/secrets/views.py
@@ -220,5 +220,4 @@ class SecretBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
permission_required = 'secrets.delete_secret'
cls = Secret
form = SecretBulkDeleteForm
- template_name = 'secrets/secret_bulk_delete.html'
default_redirect_url = 'secrets:secret_list'
diff --git a/netbox/templates/circuits/circuit_bulk_delete.html b/netbox/templates/circuits/circuit_bulk_delete.html
deleted file mode 100644
index b1fb7677d..000000000
--- a/netbox/templates/circuits/circuit_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Circuits?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these circuits?
-
-
- {% for circuit in selected_objects %}
- - {{ circuit }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/circuits/provider_bulk_delete.html b/netbox/templates/circuits/provider_bulk_delete.html
deleted file mode 100644
index ca9487e84..000000000
--- a/netbox/templates/circuits/provider_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Providers?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these providers?
-
-
- {% for provider in selected_objects %}
- - {{ provider }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/dcim/device_bulk_delete.html b/netbox/templates/dcim/device_bulk_delete.html
deleted file mode 100644
index 6bc5c18de..000000000
--- a/netbox/templates/dcim/device_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Devices?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these devices?
-
-
- {% for device in selected_objects %}
- - {{ device }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/dcim/devicetype_bulk_delete.html b/netbox/templates/dcim/devicetype_bulk_delete.html
deleted file mode 100644
index d779bbbc2..000000000
--- a/netbox/templates/dcim/devicetype_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Device Types?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these device types?
-
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rack_bulk_delete.html b/netbox/templates/dcim/rack_bulk_delete.html
deleted file mode 100644
index d2002886e..000000000
--- a/netbox/templates/dcim/rack_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Racks?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these racks?
-
-
- {% for rack in selected_objects %}
- - {{ rack }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/dcim/rackgroup_bulk_delete.html b/netbox/templates/dcim/rackgroup_bulk_delete.html
deleted file mode 100644
index a4c08c1a2..000000000
--- a/netbox/templates/dcim/rackgroup_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Rack Groups?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these rack groups?
-
-
- {% for rg in selected_objects %}
- - {{ rg }} ({{ rg.site }})
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/ipam/aggregate_bulk_delete.html b/netbox/templates/ipam/aggregate_bulk_delete.html
deleted file mode 100644
index 14d5de7bf..000000000
--- a/netbox/templates/ipam/aggregate_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Aggregates?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these aggregates?
-
-
- {% for aggregate in selected_objects %}
- - {{ aggregate }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/ipam/ipaddress_bulk_delete.html b/netbox/templates/ipam/ipaddress_bulk_delete.html
deleted file mode 100644
index bc9786a3a..000000000
--- a/netbox/templates/ipam/ipaddress_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete IP Addresses?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these IP addresses?
-
-
- {% for ipaddress in selected_objects %}
- - {{ ipaddress }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/ipam/prefix_bulk_delete.html b/netbox/templates/ipam/prefix_bulk_delete.html
deleted file mode 100644
index e0da3d310..000000000
--- a/netbox/templates/ipam/prefix_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Prefixes?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these prefixes?
-
-
- {% for prefix in selected_objects %}
- - {{ prefix }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/ipam/vlan_bulk_delete.html b/netbox/templates/ipam/vlan_bulk_delete.html
deleted file mode 100644
index c3d6bc0f1..000000000
--- a/netbox/templates/ipam/vlan_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete VLANs?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these VLANs?
-
-
- {% for vlan in selected_objects %}
- - {{ vlan }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/ipam/vrf_bulk_delete.html b/netbox/templates/ipam/vrf_bulk_delete.html
deleted file mode 100644
index 58d4d8899..000000000
--- a/netbox/templates/ipam/vrf_bulk_delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete VRFs?{% endblock %}
-
-{% block message %}
-
- Are you sure you want to delete these VRFs?
-
-
- {% for vrf in selected_objects %}
- - {{ vrf }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/secrets/secret_bulk_delete.html b/netbox/templates/secrets/secret_bulk_delete.html
deleted file mode 100644
index feb525424..000000000
--- a/netbox/templates/secrets/secret_bulk_delete.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends 'utilities/confirmation_form.html' %}
-{% load form_helpers %}
-
-{% block title %}Delete Secrets?{% endblock %}
-
-{% block message %}
- Are you sure you want to delete these secrets?
-
- {% for secret in selected_objects %}
- - {{ secret }}
- {% endfor %}
-
-{% endblock %}
diff --git a/netbox/templates/utilities/confirm_bulk_delete.html b/netbox/templates/utilities/confirm_bulk_delete.html
new file mode 100644
index 000000000..49fb975a3
--- /dev/null
+++ b/netbox/templates/utilities/confirm_bulk_delete.html
@@ -0,0 +1,15 @@
+{% extends 'utilities/confirmation_form.html' %}
+{% load form_helpers %}
+
+{% block title %}Delete {{ obj_type_plural|default:"objects" }}?{% endblock %}
+
+{% block message %}
+
+ Are you sure you want to delete these {{ obj_type_plural|default:"objects" }}?
+
+
+ {% for obj in selected_objects %}
+ - {{ obj }}
+ {% endfor %}
+
+{% endblock %}
diff --git a/netbox/utilities/views.py b/netbox/utilities/views.py
index 8eadb75a5..93731f882 100644
--- a/netbox/utilities/views.py
+++ b/netbox/utilities/views.py
@@ -294,7 +294,7 @@ class BulkEditView(View):
class BulkDeleteView(View):
cls = None
form = None
- template_name = None
+ template_name = 'utilities/confirm_bulk_delete.html'
default_redirect_url = None
@method_decorator(staff_member_required)
@@ -338,6 +338,7 @@ class BulkDeleteView(View):
return render(request, self.template_name, {
'form': form,
+ 'obj_type_plural': self.cls._meta.verbose_name_plural,
'selected_objects': selected_objects,
'cancel_url': redirect_url,
})