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 %}