Skip to content

Commit bdb0e57

Browse files
committed
Enable changelog message support for bulk deletions
1 parent 1615a36 commit bdb0e57

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

netbox/netbox/api/viewsets/mixins.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,18 +149,25 @@ def bulk_destroy(self, request, *args, **kwargs):
149149
serializer = BulkOperationSerializer(data=request.data, many=True)
150150
serializer.is_valid(raise_exception=True)
151151
qs = self.get_bulk_destroy_queryset().filter(
152-
pk__in=[o['id'] for o in serializer.data]
152+
pk__in=[o['id'] for o in serializer.validated_data]
153153
)
154154

155-
self.perform_bulk_destroy(qs)
155+
# Compile any changelog messages to be recorded on the objects being deleted
156+
changelog_messages = {
157+
o['id']: o.get('changelog_message') for o in serializer.validated_data
158+
}
159+
160+
self.perform_bulk_destroy(qs, changelog_messages)
156161

157162
return Response(status=status.HTTP_204_NO_CONTENT)
158163

159-
def perform_bulk_destroy(self, objects):
164+
def perform_bulk_destroy(self, objects, changelog_messages=None):
165+
changelog_messages = changelog_messages or {}
160166
with transaction.atomic(using=router.db_for_write(self.queryset.model)):
161167
for obj in objects:
162168
if hasattr(obj, 'snapshot'):
163169
obj.snapshot()
170+
obj._changelog_message = changelog_messages.get(obj.pk)
164171
self.perform_destroy(obj)
165172

166173

0 commit comments

Comments
 (0)