Skip to content

Commit 53e2323

Browse files
fix: Sort milestones for groups not using dates (ietf-tools#6642)
* fix: Respect uses_milestone_dates == False * test: Test milestone ordering * test: Fix temp variable naming
1 parent c36f63b commit 53e2323

2 files changed

Lines changed: 47 additions & 2 deletions

File tree

ietf/iesg/tests.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ietf.doc.models import Document, DocAlias, State, RelatedDocument
2121
from ietf.doc.factories import WgDraftFactory, IndividualDraftFactory, ConflictReviewFactory, BaseDocumentFactory, CharterFactory, WgRfcFactory, IndividualRfcFactory
2222
from ietf.doc.utils import create_ballot_if_not_open
23-
from ietf.group.factories import RoleFactory, GroupFactory
23+
from ietf.group.factories import RoleFactory, GroupFactory, DatedGroupMilestoneFactory, DatelessGroupMilestoneFactory
2424
from ietf.group.models import Group, GroupMilestone, Role
2525
from ietf.iesg.agenda import get_agenda_date, agenda_data, fill_in_agenda_administrivia, agenda_sections
2626
from ietf.iesg.models import TelechatDate, TelechatAgendaContent
@@ -71,7 +71,50 @@ def test_milestones_needing_review(self):
7171
r = self.client.get(url)
7272
self.assertEqual(r.status_code, 200)
7373
self.assertNotContains(r, m.desc)
74+
75+
def test_milestones_needing_review_ordering(self):
76+
dated_group = GroupFactory(uses_milestone_dates=True)
77+
RoleFactory(
78+
name_id='ad',
79+
group=dated_group,
80+
person=Person.objects.get(user__username='ad'),
81+
)
82+
dated_milestones = DatedGroupMilestoneFactory.create_batch(
83+
2, group=dated_group, state_id="review"
84+
)
85+
dated_milestones[0].due -= datetime.timedelta(days=1) # make this one earlier
86+
dated_milestones[0].save()
87+
88+
dateless_group = GroupFactory(uses_milestone_dates=False)
89+
RoleFactory(
90+
name_id='ad',
91+
group=dateless_group,
92+
person=Person.objects.get(user__username='ad'),
93+
)
94+
dateless_milestones = DatelessGroupMilestoneFactory.create_batch(
95+
2, group=dateless_group, state_id="review"
96+
)
97+
98+
url = urlreverse("ietf.iesg.views.milestones_needing_review")
99+
self.client.login(username="ad", password="ad+password")
100+
r = self.client.get(url)
101+
self.assertEqual(r.status_code, 200)
102+
pq = PyQuery(r.content)
74103

104+
# check order-by-date
105+
dated_tbody = pq(f'td:contains("{dated_milestones[0].desc}")').closest("tbody")
106+
next_td = dated_tbody.find('td:contains("Next")')
107+
self.assertEqual(next_td.siblings()[0].text.strip(), dated_milestones[0].desc)
108+
last_td = dated_tbody.find('td:contains("Last")')
109+
self.assertEqual(last_td.siblings()[0].text.strip(), dated_milestones[1].desc)
110+
111+
# check order-by-order
112+
dateless_tbody = pq(f'td:contains("{dateless_milestones[0].desc}")').closest("tbody")
113+
next_td = dateless_tbody.find('td:contains("Next")')
114+
self.assertEqual(next_td.siblings()[0].text.strip(), dateless_milestones[0].desc)
115+
last_td = dateless_tbody.find('td:contains("Last")')
116+
self.assertEqual(last_td.siblings()[0].text.strip(), dateless_milestones[1].desc)
117+
75118

76119
def test_review_decisions(self):
77120
draft = WgDraftFactory()

ietf/iesg/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,9 @@ def milestones_needing_review(request):
526526
ad_list.append(ad)
527527
ad.groups_needing_review = sorted(groups, key=lambda g: g.acronym)
528528
for g, milestones in groups.items():
529-
g.milestones_needing_review = sorted(milestones, key=lambda m: m.due)
529+
g.milestones_needing_review = sorted(
530+
milestones, key=lambda m: m.due if m.group.uses_milestone_dates else m.order
531+
)
530532

531533
return render(request, 'iesg/milestones_needing_review.html',
532534
dict(ads=sorted(ad_list, key=lambda ad: ad.plain_name()),))

0 commit comments

Comments
 (0)