Skip to content

Commit 9c81a09

Browse files
Shows only true missing objects, fixes #34
also correctly scopes deleted for followed fields
1 parent e9bde74 commit 9c81a09

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

reversion_compare/admin.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ def get_many_to_something(self, ids, related_model, is_reverse=False):
147147

148148
missing_objects = []
149149
missing_ids = []
150+
deleted = []
150151

151152
if self.field_name not in self.adapter.follow:
152153
# This models was not registered with follow relations
@@ -160,9 +161,16 @@ def get_many_to_something(self, ids, related_model, is_reverse=False):
160161
missing_objects = related_model.objects.all().filter(pk__in=missing_ids1)
161162
missing_ids = list(target_ids.difference(set(missing_objects.values_list('pk', flat=True))))
162163

163-
deleted = []
164-
if is_reverse:
165-
deleted = [d for d in reversion.get_deleted(related_model) if d.revision == old_revision]
164+
if is_reverse:
165+
true_missing_objects = []
166+
for o in missing_objects:
167+
for ver in reversion.get_for_object(o):
168+
# An object can only be missing if it actually existed prior to this version
169+
# Otherwise its a new item
170+
if ver.revision.date_created < version.revision.date_created:
171+
true_missing_objects.append(o)
172+
missing_objects = true_missing_objects
173+
deleted = [d for d in reversion.get_deleted(related_model) if d.revision == old_revision]
166174
return versions, missing_objects, missing_ids, deleted
167175

168176
def get_debug(self):

0 commit comments

Comments
 (0)