Remove abandoned charters from any future telechats. Fixes #3003. Commit ready for merge.

- Legacy-Id: 18037
This commit is contained in:
Robert Sparks 2020-06-22 21:22:54 +00:00
parent da0c81d78f
commit f7b1ce1fce
3 changed files with 20 additions and 4 deletions

View file

@ -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

View file

@ -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())

View file

@ -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)