Skip to content

Commit 1a29f28

Browse files
committed
Allow defer for status change documents. Fixes bug ietf-tools#1397. Commit ready for merge.
- Legacy-Id: 8256
1 parent 0b49f40 commit 1a29f28

6 files changed

Lines changed: 501 additions & 54 deletions

File tree

ietf/doc/migrations/0020_change_statchg_statetype_label.py

Lines changed: 369 additions & 0 deletions
Large diffs are not rendered by default.

ietf/doc/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,8 @@ def active_defer_event(self):
390390
return self.latest_event(type="changed_state", desc__icontains="State changed to <b>IESG Evaluation - Defer</b>")
391391
elif self.type_id == "conflrev" and self.get_state_slug("conflrev") == "defer":
392392
return self.latest_event(type="changed_state", desc__icontains="State changed to <b>IESG Evaluation - Defer</b>")
393+
elif self.type_id == "statchg" and self.get_state_slug("statchg") == "defer":
394+
return self.latest_event(type="changed_state", desc__icontains="State changed to <b>IESG Evaluation - Defer</b>")
393395
return None
394396

395397
def most_recent_ietflc(self):

ietf/doc/tests_ballot.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ def helper_test_defer(self,name):
476476
doc = Document.objects.get(name=name)
477477
self.assertEqual(doc.telechat_date(), second_date)
478478
self.assertTrue(doc.returning_item())
479-
defer_states = dict(draft=['draft-iesg','defer'],conflrev=['conflrev','defer'])
479+
defer_states = dict(draft=['draft-iesg','defer'],conflrev=['conflrev','defer'],statchg=['statchg','defer'])
480480
if doc.type_id in defer_states:
481481
self.assertEqual(doc.get_state(defer_states[doc.type_id][0]).slug,defer_states[doc.type_id][1])
482482
self.assertTrue(doc.active_defer_event())
@@ -511,7 +511,7 @@ def helper_test_undefer(self,name):
511511
returning_item = True,
512512
)
513513
e.save()
514-
defer_states = dict(draft=['draft-iesg','defer'],conflrev=['conflrev','defer'])
514+
defer_states = dict(draft=['draft-iesg','defer'],conflrev=['conflrev','defer'],statchg=['statchg','defer'])
515515
if doc.type_id in defer_states:
516516
doc.set_state(State.objects.get(used=True, type=defer_states[doc.type_id][0],slug=defer_states[doc.type_id][1]))
517517
doc.save()
@@ -530,7 +530,7 @@ def helper_test_undefer(self,name):
530530
doc = Document.objects.get(name=name)
531531
self.assertEqual(doc.telechat_date(), first_date)
532532
self.assertTrue(doc.returning_item())
533-
undefer_states = dict(draft=['draft-iesg','iesg-eva'],conflrev=['conflrev','iesgeval'])
533+
undefer_states = dict(draft=['draft-iesg','iesg-eva'],conflrev=['conflrev','iesgeval'],statchg=['statchg','iesgeval'])
534534
if doc.type_id in undefer_states:
535535
self.assertEqual(doc.get_state(undefer_states[doc.type_id][0]).slug,undefer_states[doc.type_id][1])
536536
self.assertFalse(doc.active_defer_event())
@@ -551,12 +551,18 @@ def test_defer_draft(self):
551551
def test_defer_conflict_review(self):
552552
self.helper_test_defer('conflict-review-imaginary-irtf-submission')
553553

554+
def test_defer_status_change(self):
555+
self.helper_test_defer('status-change-imaginary-mid-review')
556+
554557
def test_undefer_draft(self):
555558
self.helper_test_undefer('draft-ietf-mars-test')
556559

557560
def test_undefer_conflict_review(self):
558561
self.helper_test_undefer('conflict-review-imaginary-irtf-submission')
559562

563+
def test_undefer_status_change(self):
564+
self.helper_test_undefer('status-change-imaginary-mid-review')
565+
560566
# when charters support being deferred, be sure to test them here
561567

562568
def setUp(self):

ietf/doc/views_ballot.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ def do_undefer_ballot(request, doc):
5454
if doc.type_id == 'draft':
5555
new_state = State.objects.get(used=True, type="draft-iesg", slug='iesg-eva')
5656
prev_tags = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
57-
elif doc.type_id == 'conflrev':
58-
new_state = State.objects.get(used=True, type='conflrev',slug='iesgeval')
57+
elif doc.type_id in ['conflrev','statchg']:
58+
new_state = State.objects.get(used=True, type=doc.type_id, slug='iesgeval')
5959

6060
prev_state = doc.get_state(new_state.type_id if new_state else None)
6161

@@ -334,9 +334,9 @@ def clear_ballot(request, name):
334334
def defer_ballot(request, name):
335335
"""Signal post-pone of ballot, notifying relevant parties."""
336336
doc = get_object_or_404(Document, docalias__name=name)
337-
if doc.type_id not in ('draft','conflrev'):
337+
if doc.type_id not in ('draft','conflrev','statchg'):
338338
raise Http404()
339-
interesting_state = dict(draft='draft-iesg',conflrev='conflrev')
339+
interesting_state = dict(draft='draft-iesg',conflrev='conflrev',statchg='statchg')
340340
state = doc.get_state(interesting_state[doc.type_id])
341341
if not state or state.slug=='defer' or not doc.telechat_date():
342342
raise Http404()
@@ -353,8 +353,8 @@ def defer_ballot(request, name):
353353
if doc.type_id == 'draft':
354354
new_state = State.objects.get(used=True, type="draft-iesg", slug='defer')
355355
prev_tags = doc.tags.filter(slug__in=IESG_SUBSTATE_TAGS)
356-
elif doc.type_id == 'conflrev':
357-
new_state = State.objects.get(used=True, type='conflrev', slug='defer')
356+
elif doc.type_id in ['conflrev','statchg']:
357+
new_state = State.objects.get(used=True, type=doc.type_id, slug='defer')
358358

359359
prev_state = doc.get_state(new_state.type_id if new_state else None)
360360

@@ -383,11 +383,11 @@ def defer_ballot(request, name):
383383
def undefer_ballot(request, name):
384384
"""undo deferral of ballot ballot."""
385385
doc = get_object_or_404(Document, docalias__name=name)
386-
if doc.type_id not in ('draft','conflrev'):
386+
if doc.type_id not in ('draft','conflrev','statchg'):
387387
raise Http404()
388388
if doc.type_id == 'draft' and not doc.get_state("draft-iesg"):
389389
raise Http404()
390-
interesting_state = dict(draft='draft-iesg',conflrev='conflrev')
390+
interesting_state = dict(draft='draft-iesg',conflrev='conflrev',statchg='statchg')
391391
state = doc.get_state(interesting_state[doc.type_id])
392392
if not state or state.slug!='defer':
393393
raise Http404()

0 commit comments

Comments
 (0)