From 6bccb6d90b7c8b95f68330b71cc024255261d963 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Tue, 21 Sep 2021 14:24:23 -0400 Subject: [PATCH] Fixes #7333: Prevent inadvertent deletion of prior change records when deleting objects --- docs/release-notes/version-3.0.md | 1 + netbox/extras/graphql/mixins.py | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index d74643f6c..7f9eafc47 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -11,6 +11,7 @@ * [#7321](https://github.com/netbox-community/netbox/issues/7321) - Don't overwrite multi-select custom fields during bulk edit * [#7324](https://github.com/netbox-community/netbox/issues/7324) - Fix TypeError exception in web UI when filtering objects using single-choice filters +* [#7333](https://github.com/netbox-community/netbox/issues/7333) - Prevent inadvertent deletion of prior change records when deleting objects ## v3.0.3 (2021-09-20) diff --git a/netbox/extras/graphql/mixins.py b/netbox/extras/graphql/mixins.py index 3cf12896b..462ba721f 100644 --- a/netbox/extras/graphql/mixins.py +++ b/netbox/extras/graphql/mixins.py @@ -1,6 +1,9 @@ import graphene +from django.contrib.contenttypes.models import ContentType from graphene.types.generic import GenericScalar +from extras.models import ObjectChange + __all__ = ( 'ChangelogMixin', 'ConfigContextMixin', @@ -15,7 +18,12 @@ class ChangelogMixin: changelog = graphene.List('extras.graphql.types.ObjectChangeType') def resolve_changelog(self, info): - return self.object_changes.restrict(info.context.user, 'view') + content_type = ContentType.objects.get_for_model(self) + object_changes = ObjectChange.objects.filter( + changed_object_type=content_type, + changed_object_id=self.pk + ) + return object_changes.restrict(info.context.user, 'view') class ConfigContextMixin: