diff --git a/ietf/group/milestones.py b/ietf/group/milestones.py index c79116ff3..c4928919b 100644 --- a/ietf/group/milestones.py +++ b/ietf/group/milestones.py @@ -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, diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 8470981cc..2a77ca5b7 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -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')