From cfe9d7f8089d7644535be2f4298ecd713e777870 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 12 Nov 2021 16:13:11 +0000 Subject: [PATCH] Repair document_main when there are status change relationships. Commit ready for merge. - Legacy-Id: 19654 --- ietf/doc/factories.py | 27 ++++++++++++++++++++++++++ ietf/doc/tests.py | 10 +++++++++- ietf/templates/doc/document_draft.html | 4 ++-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index 824f13cba..4a843c6d9 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -231,6 +231,33 @@ class CharterFactory(BaseDocumentFactory): obj.group.charter = extracted or obj obj.group.save() +class StatusChangeFactory(BaseDocumentFactory): + type_id='statchg' + + group = factory.SubFactory('ietf.group.factories.GroupFactory',acronym='iesg',type_id='ietf') + name = factory.Sequence(lambda n: f'status-change-{n}-factoried') + + @factory.post_generation + def changes_status_of(obj, create, extracted, **kwargs): + if not create: + return + if extracted: + for (rel, target) in extracted: + obj.relateddocument_set.create(relationship_id=rel,target=extracted) + else: + obj.relateddocument_set.create(relationship_id='tobcp', target=WgRfcFactory().docalias.first()) + + @factory.post_generation + def states(obj, create, extracted, **kwargs): + if not create: + return + if extracted: + for state in extracted: + obj.set_state(state) + else: + obj.set_state(State.objects.get(type_id='statchg',slug='appr-sent')) + + class ConflictReviewFactory(BaseDocumentFactory): type_id='conflrev' diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 4559020e4..3c0f88c71 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -34,7 +34,8 @@ from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDo from ietf.doc.factories import ( DocumentFactory, DocEventFactory, CharterFactory, ConflictReviewFactory, WgDraftFactory, IndividualDraftFactory, WgRfcFactory, IndividualRfcFactory, StateDocEventFactory, BallotPositionDocEventFactory, - BallotDocEventFactory, DocumentAuthorFactory, NewRevisionDocEventFactory) + BallotDocEventFactory, DocumentAuthorFactory, NewRevisionDocEventFactory, + StatusChangeFactory) from ietf.doc.fields import SearchableDocumentsField from ietf.doc.utils import create_ballot_if_not_open, uppercase_std_abbreviated_name from ietf.group.models import Group @@ -1440,6 +1441,13 @@ Man Expires September 22, 2015 [Page 3] class DocTestCase(TestCase): + def test_status_change(self): + statchg = StatusChangeFactory() + r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=statchg.name))) + self.assertEqual(r.status_code, 200) + r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=statchg.relateddocument_set.first().target.document.canonical_name()))) + self.assertEqual(r.status_code, 200) + def test_document_charter(self): CharterFactory(name='charter-ietf-mars') r = self.client.get(urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name="charter-ietf-mars"))) diff --git a/ietf/templates/doc/document_draft.html b/ietf/templates/doc/document_draft.html index c35cfb680..4f1912b69 100644 --- a/ietf/templates/doc/document_draft.html +++ b/ietf/templates/doc/document_draft.html @@ -61,8 +61,8 @@ {% if updated_by %}
Updated by {{ updated_by|urlize_related_source_list|join:", " }}
{% endif %} {% if obsoletes %}
Obsoletes {{ obsoletes|urlize_related_target_list|join:", " }}
{% endif %} {% if updates %}
Updates {{ updates|urlize_related_target_list|join:", " }}
{% endif %} - {% if status_changes %}
Status changed by {{ status_changes|join:", "|urlize_related_source_list }}
{% endif %} - {% if proposed_status_changes %}
Proposed status changed by {{ proposed_status_changes|join:", "|urlize_related_source_list }}
{% endif %} + {% if status_changes %}
Status changed by {{ status_changes|join:", "|urlize_ietf_docs }}
{% endif %} + {% if proposed_status_changes %}
Proposed status changed by {{ proposed_status_changes|join:", "|urlize_ietf_docs }}
{% endif %} {% if rfc_aliases %}
Also known as {{ rfc_aliases|join:", "|urlize_ietf_docs }}
{% endif %} {% if draft_name %}
Was {{ draft_name }} {% if submission %}({{ submission|safe }}){% endif %}
{% endif %} {% else %}