fix: Sort milestones for groups not using dates (#6642)
* fix: Respect uses_milestone_dates == False * test: Test milestone ordering * test: Fix temp variable naming
This commit is contained in:
parent
c36f63baf9
commit
53e232302e
|
@ -20,7 +20,7 @@ from ietf.doc.models import DocEvent, BallotPositionDocEvent, TelechatDocEvent
|
|||
from ietf.doc.models import Document, DocAlias, State, RelatedDocument
|
||||
from ietf.doc.factories import WgDraftFactory, IndividualDraftFactory, ConflictReviewFactory, BaseDocumentFactory, CharterFactory, WgRfcFactory, IndividualRfcFactory
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.group.factories import RoleFactory, GroupFactory
|
||||
from ietf.group.factories import RoleFactory, GroupFactory, DatedGroupMilestoneFactory, DatelessGroupMilestoneFactory
|
||||
from ietf.group.models import Group, GroupMilestone, Role
|
||||
from ietf.iesg.agenda import get_agenda_date, agenda_data, fill_in_agenda_administrivia, agenda_sections
|
||||
from ietf.iesg.models import TelechatDate, TelechatAgendaContent
|
||||
|
@ -71,7 +71,50 @@ class IESGTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
self.assertNotContains(r, m.desc)
|
||||
|
||||
def test_milestones_needing_review_ordering(self):
|
||||
dated_group = GroupFactory(uses_milestone_dates=True)
|
||||
RoleFactory(
|
||||
name_id='ad',
|
||||
group=dated_group,
|
||||
person=Person.objects.get(user__username='ad'),
|
||||
)
|
||||
dated_milestones = DatedGroupMilestoneFactory.create_batch(
|
||||
2, group=dated_group, state_id="review"
|
||||
)
|
||||
dated_milestones[0].due -= datetime.timedelta(days=1) # make this one earlier
|
||||
dated_milestones[0].save()
|
||||
|
||||
dateless_group = GroupFactory(uses_milestone_dates=False)
|
||||
RoleFactory(
|
||||
name_id='ad',
|
||||
group=dateless_group,
|
||||
person=Person.objects.get(user__username='ad'),
|
||||
)
|
||||
dateless_milestones = DatelessGroupMilestoneFactory.create_batch(
|
||||
2, group=dateless_group, state_id="review"
|
||||
)
|
||||
|
||||
url = urlreverse("ietf.iesg.views.milestones_needing_review")
|
||||
self.client.login(username="ad", password="ad+password")
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
pq = PyQuery(r.content)
|
||||
|
||||
# check order-by-date
|
||||
dated_tbody = pq(f'td:contains("{dated_milestones[0].desc}")').closest("tbody")
|
||||
next_td = dated_tbody.find('td:contains("Next")')
|
||||
self.assertEqual(next_td.siblings()[0].text.strip(), dated_milestones[0].desc)
|
||||
last_td = dated_tbody.find('td:contains("Last")')
|
||||
self.assertEqual(last_td.siblings()[0].text.strip(), dated_milestones[1].desc)
|
||||
|
||||
# check order-by-order
|
||||
dateless_tbody = pq(f'td:contains("{dateless_milestones[0].desc}")').closest("tbody")
|
||||
next_td = dateless_tbody.find('td:contains("Next")')
|
||||
self.assertEqual(next_td.siblings()[0].text.strip(), dateless_milestones[0].desc)
|
||||
last_td = dateless_tbody.find('td:contains("Last")')
|
||||
self.assertEqual(last_td.siblings()[0].text.strip(), dateless_milestones[1].desc)
|
||||
|
||||
|
||||
def test_review_decisions(self):
|
||||
draft = WgDraftFactory()
|
||||
|
|
|
@ -526,7 +526,9 @@ def milestones_needing_review(request):
|
|||
ad_list.append(ad)
|
||||
ad.groups_needing_review = sorted(groups, key=lambda g: g.acronym)
|
||||
for g, milestones in groups.items():
|
||||
g.milestones_needing_review = sorted(milestones, key=lambda m: m.due)
|
||||
g.milestones_needing_review = sorted(
|
||||
milestones, key=lambda m: m.due if m.group.uses_milestone_dates else m.order
|
||||
)
|
||||
|
||||
return render(request, 'iesg/milestones_needing_review.html',
|
||||
dict(ads=sorted(ad_list, key=lambda ad: ad.plain_name()),))
|
||||
|
|
Loading…
Reference in a new issue