Guard a sort that gets a mix of integers and None. Commit ready for merge.

- Legacy-Id: 19224
This commit is contained in:
Robert Sparks 2021-07-15 16:28:15 +00:00
parent bbdf15eabd
commit 62c364899c
2 changed files with 13 additions and 1 deletions

View file

@ -383,7 +383,7 @@ def edit_milestones(request, acronym, group_type=None, milestone_set="current"):
if group.uses_milestone_dates:
forms.sort(key=lambda f: f.milestone.due if f.milestone else datetime.date.max)
else:
forms.sort(key=lambda f: (f.milestone is None, f.milestone.order if f.milestone else None) )
forms.sort(key=lambda f: (f.milestone is None, f.milestone.order if f.milestone and f.milestone.order is not None else -1) )
return render(request, 'group/edit_milestones.html',
dict(group=group,

View file

@ -1321,6 +1321,18 @@ class MilestoneTests(TestCase):
self.assertEqual(group.charter.docevent_set.count(), events_before + 2) # 1 delete, 1 add
def test_edit_sort(self):
group = GroupFactory(uses_milestone_dates=False)
DatelessGroupMilestoneFactory(group=group,order=1)
DatelessGroupMilestoneFactory(group=group,order=0)
DatelessGroupMilestoneFactory(group=group,order=None)
url = urlreverse('ietf.group.milestones.edit_milestones;current', kwargs=dict(group_type=group.type_id, acronym=group.acronym))
login_testing_unauthorized(self, "secretary", url)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertEqual([x.value for x in q('input[id^=id_m][id$=order]')], [None, '0', '1'])
class DatelessMilestoneTests(TestCase):
def test_switch_to_dateless(self):
ad_role = RoleFactory(group__type_id='area',name_id='ad')