Skip to content

Commit 752bc21

Browse files
authored
feat: highlight unexpected state in AD dashboard (ietf-tools#8738)
* feat: highlight unexpected state in AD dashboard * test: add tests for is_unexpected_wg_state * test: improve tests using WgDraftFactory
1 parent 431c475 commit 752bc21

3 files changed

Lines changed: 33 additions & 0 deletions

File tree

ietf/doc/templatetags/ietf_filters.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,19 @@ def state(doc, slug):
480480
slug = "%s-stream-%s" % (doc.type_id, doc.stream_id)
481481
return doc.get_state(slug)
482482

483+
484+
@register.filter
485+
def is_unexpected_wg_state(doc):
486+
"""Returns a flag indicating whether the document has an unexpected wg state."""
487+
if not doc.type_id == "draft":
488+
return False
489+
490+
draft_iesg_state = doc.get_state("draft-iesg")
491+
draft_stream_state = doc.get_state("draft-stream-ietf")
492+
493+
return draft_iesg_state.slug != "idexists" and draft_stream_state is not None and draft_stream_state.slug != "sub-pub"
494+
495+
483496
@register.filter
484497
def statehelp(state):
485498
"Output help icon with tooltip for state."

ietf/doc/templatetags/tests_ietf_filters.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@
1414
ConflictReviewFactory,
1515
BofreqFactory,
1616
StatementFactory,
17+
RfcFactory,
1718
)
1819
from ietf.doc.models import DocEvent
1920
from ietf.doc.templatetags.ietf_filters import (
2021
urlize_ietf_docs,
2122
is_valid_url,
2223
is_in_stream,
24+
is_unexpected_wg_state,
2325
)
2426
from ietf.person.models import Person
2527
from ietf.utils.test_utils import TestCase
@@ -174,3 +176,17 @@ def test_urlize_ietf_docs(self):
174176
for input, output in cases:
175177
# debug.show("(input, urlize_ietf_docs(input), output)")
176178
self.assertEqual(urlize_ietf_docs(input), output)
179+
180+
def test_is_unexpected_wg_state(self):
181+
"""
182+
Test that the unexpected_wg_state function works correctly
183+
"""
184+
# test documents with expected wg states
185+
self.assertFalse(is_unexpected_wg_state(RfcFactory()))
186+
self.assertFalse(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'sub-pub')])))
187+
self.assertFalse(is_unexpected_wg_state(WgDraftFactory (states=[('draft-iesg', 'idexists')])))
188+
self.assertFalse(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'wg-cand'), ('draft-iesg','idexists')])))
189+
190+
# test documents with unexpected wg states due to invalid combination of states
191+
self.assertTrue(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'wg-cand'), ('draft-iesg','lc-req')])))
192+
self.assertTrue(is_unexpected_wg_state(WgDraftFactory (states=[('draft-stream-ietf', 'chair-w'), ('draft-iesg','pub-req')])))

ietf/templates/doc/search/status_columns.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@
7878
{% person_link action_holder.person title=action_holder.role_for_doc %}{% if action_holder|action_holder_badge %} {{ action_holder|action_holder_badge }}{% endif %}{% if not forloop.last %},{% endif %}
7979
{% endfor %}
8080
{% endif %}
81+
{% if doc|is_unexpected_wg_state %}
82+
<br>
83+
<span class="badge rounded-pill text-bg-warning">Unexpected WG state</span>
84+
{% endif %}
8185
{% else %}
8286
{# RFC #}
8387
{{ doc.std_level|safe }} RFC

0 commit comments

Comments
 (0)