mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
14947 fix for missing changelog if only update m2m (#14986)
* 14947 fix for missing changelog if only update m2m * 14947 review change * 14947 DRY save logic * 14947 DRY save logic * Refactor logic --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
@ -68,21 +68,23 @@ def handle_changed_object(sender, instance, **kwargs):
|
|||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
# Record an ObjectChange if applicable
|
# Create/update an ObejctChange record for this change
|
||||||
if m2m_changed:
|
objectchange = instance.to_objectchange(action)
|
||||||
ObjectChange.objects.filter(
|
# If this is a many-to-many field change, check for a previous ObjectChange instance recorded
|
||||||
|
# for this object by this request and update it
|
||||||
|
if m2m_changed and (
|
||||||
|
prev_change := ObjectChange.objects.filter(
|
||||||
changed_object_type=ContentType.objects.get_for_model(instance),
|
changed_object_type=ContentType.objects.get_for_model(instance),
|
||||||
changed_object_id=instance.pk,
|
changed_object_id=instance.pk,
|
||||||
request_id=request.id
|
request_id=request.id
|
||||||
).update(
|
).first()
|
||||||
postchange_data=instance.to_objectchange(action).postchange_data
|
):
|
||||||
)
|
prev_change.postchange_data = objectchange.postchange_data
|
||||||
else:
|
prev_change.save()
|
||||||
objectchange = instance.to_objectchange(action)
|
elif objectchange and objectchange.has_changes:
|
||||||
if objectchange and objectchange.has_changes:
|
objectchange.user = request.user
|
||||||
objectchange.user = request.user
|
objectchange.request_id = request.id
|
||||||
objectchange.request_id = request.id
|
objectchange.save()
|
||||||
objectchange.save()
|
|
||||||
|
|
||||||
# If this is an M2M change, update the previously queued webhook (from post_save)
|
# If this is an M2M change, update the previously queued webhook (from post_save)
|
||||||
queue = events_queue.get()
|
queue = events_queue.get()
|
||||||
|
Reference in New Issue
Block a user