mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-27 02:48:38 -06:00
BulkDeteView should delete objects individually to secure a pre-change snapshot
This commit is contained in:
parent
36e4cb430c
commit
8889cd8296
@ -1007,16 +1007,20 @@ class BulkDeleteView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
|||||||
logger.debug("Form validation was successful")
|
logger.debug("Form validation was successful")
|
||||||
|
|
||||||
# Delete objects
|
# Delete objects
|
||||||
# TODO: Take a snapshot of each object prior to bulk deletion
|
|
||||||
queryset = self.queryset.filter(pk__in=pk_list)
|
queryset = self.queryset.filter(pk__in=pk_list)
|
||||||
|
deleted_count = queryset.count()
|
||||||
try:
|
try:
|
||||||
deleted_count = queryset.delete()[1][model._meta.label]
|
for obj in queryset:
|
||||||
|
# Take a snapshot of change-logged models
|
||||||
|
if hasattr(obj, 'snapshot'):
|
||||||
|
obj.snapshot()
|
||||||
|
obj.delete()
|
||||||
except ProtectedError as e:
|
except ProtectedError as e:
|
||||||
logger.info("Caught ProtectedError while attempting to delete objects")
|
logger.info("Caught ProtectedError while attempting to delete objects")
|
||||||
handle_protectederror(queryset, request, e)
|
handle_protectederror(queryset, request, e)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
|
||||||
msg = 'Deleted {} {}'.format(deleted_count, model._meta.verbose_name_plural)
|
msg = f"Deleted {deleted_count} {model._meta.verbose_name_plural}"
|
||||||
logger.info(msg)
|
logger.info(msg)
|
||||||
messages.success(request, msg)
|
messages.success(request, msg)
|
||||||
return redirect(self.get_return_url(request))
|
return redirect(self.get_return_url(request))
|
||||||
|
Loading…
Reference in New Issue
Block a user