Skip to content

Commit 8cfa4c2

Browse files
committed
Properly sort the management items on the IETG telechat agenda. Fixes ietf-tools#1374. Ready for merge.
- Legacy-Id: 19194
1 parent 45dcc10 commit 8cfa4c2

3 files changed

Lines changed: 46 additions & 4 deletions

File tree

ietf/iesg/factories.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Copyright The IETF Trust 2016-2021, All Rights Reserved
2+
# -*- coding: utf-8 -*-
3+
4+
import debug # pyflakes:ignore
5+
import factory
6+
7+
from ietf.iesg.models import TelechatAgendaItem
8+
9+
10+
class IESGMgmtItemFactory(factory.DjangoModelFactory):
11+
class Meta:
12+
model = TelechatAgendaItem
13+
14+
type = 3
15+
text = factory.Faker('paragraph', nb_sentences=3)
16+
title = factory.Faker('sentence', nb_words=3)

ietf/iesg/tests.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright The IETF Trust 2009-2020, All Rights Reserved
1+
# Copyright The IETF Trust 2009-2021, All Rights Reserved
22
# -*- coding: utf-8 -*-
33

44

@@ -27,6 +27,8 @@
2727
from ietf.name.models import StreamName
2828
from ietf.person.models import Person
2929
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
30+
from ietf.iesg.factories import IESGMgmtItemFactory
31+
3032

3133
class IESGTests(TestCase):
3234
def test_feed(self):
@@ -131,6 +133,9 @@ def setUp(self):
131133
telechat_date=date,
132134
returning_item=True)
133135

136+
self.mgmt_items = [ ]
137+
for i in range(0, 10):
138+
self.mgmt_items.append(IESGMgmtItemFactory())
134139

135140
def tearDown(self):
136141
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
@@ -141,6 +146,7 @@ def test_fill_in_agenda_docs(self):
141146
statchg = self.telechat_docs["statchg"]
142147
conflrev = self.telechat_docs["conflrev"]
143148
charter = self.telechat_docs["charter"]
149+
mgmtitem = self.mgmt_items
144150

145151
# put on agenda
146152
date = datetime.date.today() + datetime.timedelta(days=50)
@@ -275,7 +281,6 @@ def test_fill_in_agenda_docs(self):
275281
conflrev.set_state(State.objects.get(type="conflrev", slug="needshep"))
276282
self.assertTrue(conflrev in agenda_data(date_str)["sections"]["3.4.3"]["docs"])
277283

278-
279284
# 4 WGs
280285
telechat_event.doc = charter
281286
telechat_event.save()
@@ -304,6 +309,11 @@ def test_fill_in_agenda_docs(self):
304309
#for n, s in agenda_data(date_str)["sections"].iteritems():
305310
# print n, s.get("docs") if "docs" in s else s["title"]
306311

312+
# 10 Management Items
313+
for i, mi in enumerate(mgmtitem, start=1):
314+
s = "6." + str(i)
315+
self.assertEqual(mi.title, agenda_data(date_str)["sections"][s]['title'])
316+
307317
def test_feed(self):
308318
r = self.client.get("/feed/iesg-agenda/")
309319
self.assertEqual(r.status_code, 200)
@@ -338,6 +348,14 @@ def test_agenda(self):
338348
self.assertContains(r, d.name, msg_prefix="%s '%s' not in response" % (k, d.name))
339349
self.assertContains(r, d.title, msg_prefix="%s '%s' title not in response" % (k, d.title))
340350

351+
for i, mi in enumerate(self.mgmt_items, start=1):
352+
s = "6." + str(i)
353+
self.assertContains(r, s, msg_prefix="Section '%s' not in response" % s)
354+
self.assertContains(r, mi.title, msg_prefix="Management item title '%s' not in response" % mi.title)
355+
356+
# Make sure the sort places 6.9 before 6.10
357+
self.assertLess(r.content.find(b"6.9"), r.content.find(b"6.10"))
358+
341359
def test_agenda_txt(self):
342360
r = self.client.get(urlreverse("ietf.iesg.views.agenda_txt"))
343361
self.assertEqual(r.status_code, 200)
@@ -350,6 +368,14 @@ def test_agenda_txt(self):
350368
self.assertContains(r, d.name, msg_prefix="%s '%s' not in response" % (k, d.name))
351369
self.assertContains(r, d.title, msg_prefix="%s '%s' title not in response" % (k, d.title))
352370

371+
for i, mi in enumerate(self.mgmt_items, start=1):
372+
s = "6." + str(i)
373+
self.assertContains(r, s, msg_prefix="Section '%s' not in response" % s)
374+
self.assertContains(r, mi.title, msg_prefix="Management item title '%s' not in response" % mi.title)
375+
376+
# Make sure the sort places 6.9 before 6.10
377+
self.assertLess(r.content.find(b"6.9"), r.content.find(b"6.10"))
378+
353379
def test_agenda_scribe_template(self):
354380
r = self.client.get(urlreverse("ietf.iesg.views.agenda_scribe_template"))
355381
self.assertEqual(r.status_code, 200)

ietf/iesg/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,15 @@ def agenda(request, date=None):
200200
request.session['ballot_edit_return_point'] = request.path_info
201201
return render(request, "iesg/agenda.html", {
202202
"date": data["date"],
203-
"sections": sorted(data["sections"].items()),
203+
"sections": sorted(data["sections"].items(), key=lambda x:[int(p) for p in x[0].split('.')]),
204204
"settings": settings,
205205
} )
206206

207207
def agenda_txt(request, date=None):
208208
data = agenda_data(date)
209209
return render(request, "iesg/agenda.txt", {
210210
"date": data["date"],
211-
"sections": sorted(data["sections"].items()),
211+
"sections": sorted(data["sections"].items(), key=lambda x:[int(p) for p in x[0].split('.')]),
212212
"domain": Site.objects.get_current().domain,
213213
}, content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)
214214

0 commit comments

Comments
 (0)