mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 18:08:38 -06:00
Enable changelog message support for bulk deletions
This commit is contained in:
parent
1615a369f9
commit
bdb0e5720d
@ -149,18 +149,25 @@ class BulkDestroyModelMixin:
|
||||
serializer = BulkOperationSerializer(data=request.data, many=True)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
qs = self.get_bulk_destroy_queryset().filter(
|
||||
pk__in=[o['id'] for o in serializer.data]
|
||||
pk__in=[o['id'] for o in serializer.validated_data]
|
||||
)
|
||||
|
||||
self.perform_bulk_destroy(qs)
|
||||
# Compile any changelog messages to be recorded on the objects being deleted
|
||||
changelog_messages = {
|
||||
o['id']: o.get('changelog_message') for o in serializer.validated_data
|
||||
}
|
||||
|
||||
self.perform_bulk_destroy(qs, changelog_messages)
|
||||
|
||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||
|
||||
def perform_bulk_destroy(self, objects):
|
||||
def perform_bulk_destroy(self, objects, changelog_messages=None):
|
||||
changelog_messages = changelog_messages or {}
|
||||
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
|
||||
for obj in objects:
|
||||
if hasattr(obj, 'snapshot'):
|
||||
obj.snapshot()
|
||||
obj._changelog_message = changelog_messages.get(obj.pk)
|
||||
self.perform_destroy(obj)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user