From 952bc90ee0e3a6a4f773dd1a6125dd7da9f97979 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Tue, 19 Nov 2024 08:07:49 -0600 Subject: [PATCH] fix: follow replaces when building list for diff control (#8234) --- ietf/doc/tests.py | 14 ++++++++++++++ ietf/doc/views_doc.py | 8 ++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index fa655cb88..abac10a5e 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -5,6 +5,7 @@ import os import datetime import io +from django.http import HttpRequest import lxml import bibtexparser import mock @@ -52,6 +53,7 @@ from ietf.doc.utils import ( generate_idnits2_rfcs_obsoleted, get_doc_email_aliases, ) +from ietf.doc.views_doc import get_diff_revisions from ietf.group.models import Group, Role from ietf.group.factories import GroupFactory, RoleFactory from ietf.ipr.factories import HolderIprDisclosureFactory @@ -1954,6 +1956,18 @@ class DocTestCase(TestCase): self.assertContains(r, notes.text) self.assertContains(r, rfced_note.text) + def test_diff_revisions(self): + ind_doc = IndividualDraftFactory(create_revisions=range(2)) + wg_doc = WgDraftFactory( + relations=[("replaces", ind_doc)], create_revisions=range(2) + ) + diff_revisions = get_diff_revisions(HttpRequest(), wg_doc.name, wg_doc) + self.assertEqual(len(diff_revisions), 4) + self.assertEqual( + [t[3] for t in diff_revisions], + [f"{n}-{v:02d}" for n in [wg_doc.name, ind_doc.name] for v in [1, 0]], + ) + def test_history(self): doc = IndividualDraftFactory() diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 50c60aefc..9f7cf12bc 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1133,10 +1133,10 @@ def get_diff_revisions(request, name, doc): diff_documents = [doc] diff_documents.extend( - Document.objects.filter( - relateddocument__source=doc, - relateddocument__relationship="replaces", - ) + [ + r.target + for r in RelatedDocument.objects.filter(source=doc, relationship="replaces") + ] ) if doc.came_from_draft(): diff_documents.append(doc.came_from_draft())