fix: follow replaces when building list for diff control (#8234)

This commit is contained in:
Robert Sparks 2024-11-19 08:07:49 -06:00 committed by GitHub
parent fd816c4f41
commit 952bc90ee0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 4 deletions

View file

@ -5,6 +5,7 @@
import os import os
import datetime import datetime
import io import io
from django.http import HttpRequest
import lxml import lxml
import bibtexparser import bibtexparser
import mock import mock
@ -52,6 +53,7 @@ from ietf.doc.utils import (
generate_idnits2_rfcs_obsoleted, generate_idnits2_rfcs_obsoleted,
get_doc_email_aliases, get_doc_email_aliases,
) )
from ietf.doc.views_doc import get_diff_revisions
from ietf.group.models import Group, Role from ietf.group.models import Group, Role
from ietf.group.factories import GroupFactory, RoleFactory from ietf.group.factories import GroupFactory, RoleFactory
from ietf.ipr.factories import HolderIprDisclosureFactory from ietf.ipr.factories import HolderIprDisclosureFactory
@ -1954,6 +1956,18 @@ class DocTestCase(TestCase):
self.assertContains(r, notes.text) self.assertContains(r, notes.text)
self.assertContains(r, rfced_note.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): def test_history(self):
doc = IndividualDraftFactory() doc = IndividualDraftFactory()

View file

@ -1133,10 +1133,10 @@ def get_diff_revisions(request, name, doc):
diff_documents = [doc] diff_documents = [doc]
diff_documents.extend( diff_documents.extend(
Document.objects.filter( [
relateddocument__source=doc, r.target
relateddocument__relationship="replaces", for r in RelatedDocument.objects.filter(source=doc, relationship="replaces")
) ]
) )
if doc.came_from_draft(): if doc.came_from_draft():
diff_documents.append(doc.came_from_draft()) diff_documents.append(doc.came_from_draft())