diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index f22e80cab..a773029bc 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -12,7 +12,7 @@ from typing import Optional # pyflakes:ignore from django.conf import settings from ietf.doc.models import ( Document, DocEvent, NewRevisionDocEvent, DocAlias, State, DocumentAuthor, - StateDocEvent, BallotPositionDocEvent, BallotDocEvent, BallotType, IRSGBallotDocEvent, ) + StateDocEvent, BallotPositionDocEvent, BallotDocEvent, BallotType, IRSGBallotDocEvent, TelechatDocEvent) from ietf.group.models import Group def draft_name_generator(type_id,group,n): @@ -281,6 +281,13 @@ class DocEventFactory(factory.DjangoModelFactory): def rev(self): return self.doc.rev +class TelechatDocEventFactory(DocEventFactory): + class Meta: + model = TelechatDocEvent + + telechat_date = datetime.datetime.today()+datetime.timedelta(days=14) + type = 'scheduled_for_telechat' + class NewRevisionDocEventFactory(DocEventFactory): class Meta: model = NewRevisionDocEvent diff --git a/ietf/doc/tests_charter.py b/ietf/doc/tests_charter.py index d7a25d3c0..f6a972fae 100644 --- a/ietf/doc/tests_charter.py +++ b/ietf/doc/tests_charter.py @@ -14,7 +14,7 @@ from django.urls import reverse as urlreverse import debug # pyflakes:ignore -from ietf.doc.factories import CharterFactory, NewRevisionDocEventFactory +from ietf.doc.factories import CharterFactory, NewRevisionDocEventFactory, TelechatDocEventFactory from ietf.doc.models import ( Document, State, BallotDocEvent, BallotType, NewRevisionDocEvent, TelechatDocEvent, WriteupDocEvent ) from ietf.doc.utils_charter import ( next_revision, default_review_text, default_action_text, @@ -108,6 +108,9 @@ class EditCharterTests(TestCase): url = urlreverse('ietf.doc.views_charter.change_state', kwargs=dict(name=charter.name, option=option)) login_testing_unauthorized(self, "secretary", url) + if option == 'recharter': + TelechatDocEventFactory(doc=charter) + # normal get r = self.client.get(url) self.assertEqual(r.status_code, 200) @@ -119,6 +122,8 @@ class EditCharterTests(TestCase): self.assertEqual(r.status_code, 302) if option == "abandon": self.assertTrue("abandoned" in charter.latest_event(type="changed_document").desc.lower()) + telechat_doc_event = charter.latest_event(TelechatDocEvent) + self.assertIsNone(telechat_doc_event.telechat_date) else: self.assertTrue("state changed" in charter.latest_event(type="changed_state").desc.lower()) diff --git a/ietf/doc/views_charter.py b/ietf/doc/views_charter.py index 632ab4364..916b69c36 100644 --- a/ietf/doc/views_charter.py +++ b/ietf/doc/views_charter.py @@ -22,7 +22,7 @@ import debug # pyflakes:ignore from ietf.doc.models import ( Document, DocAlias, DocHistory, State, DocEvent, BallotDocEvent, BallotPositionDocEvent, InitialReviewDocEvent, NewRevisionDocEvent, - WriteupDocEvent ) + WriteupDocEvent, TelechatDocEvent ) from ietf.doc.utils import ( add_state_change_event, close_open_ballots, create_ballot, get_chartering_type ) from ietf.doc.utils_charter import ( historic_milestones_for_charter, @@ -105,7 +105,6 @@ def change_state(request, name, option=None): oldstate = group.state if oldstate.slug in ("proposed", "bof", "unknown"): charter_state = State.objects.get(used=True, type="charter", slug="notrev") - #TODO : set an abandoned state and leave some comments here group.state = GroupStateName.objects.get(slug='abandon') group.save() e = ChangeStateGroupEvent(group=group, type="changed_state") @@ -138,6 +137,11 @@ def change_state(request, name, option=None): else: # kill hanging ballots close_open_ballots(charter, by) + # take the doc off of a telechat if scheduled + telechat_doc_event = charter.latest_event(TelechatDocEvent, type='scheduled_for_telechat') + if telechat_doc_event and telechat_doc_event.telechat_date: + e = TelechatDocEvent.objects.create(doc=charter, rev=charter.rev, by=by, type='scheduled_for_telechat', telechat_date=None, desc="Removed from agenda for telechat") + events.append(e) # Special log for abandoned efforts e = DocEvent(type="changed_document", doc=charter, rev=charter.rev, by=by)