Merged in [19194] from housley@vigilsec.com:

Properly sort the management items on the IETG telechat agenda. Fixes #1374.
 - Legacy-Id: 19227
Note: SVN reference [19194] has been migrated to Git commit 8cfa4c264f
This commit is contained in:
Robert Sparks 2021-07-15 19:59:54 +00:00
commit ade3e2be7d
3 changed files with 46 additions and 4 deletions

16
ietf/iesg/factories.py Normal file
View file

@ -0,0 +1,16 @@
# Copyright The IETF Trust 2016-2021, All Rights Reserved
# -*- coding: utf-8 -*-
import debug # pyflakes:ignore
import factory
from ietf.iesg.models import TelechatAgendaItem
class IESGMgmtItemFactory(factory.DjangoModelFactory):
class Meta:
model = TelechatAgendaItem
type = 3
text = factory.Faker('paragraph', nb_sentences=3)
title = factory.Faker('sentence', nb_words=3)

View file

@ -1,4 +1,4 @@
# Copyright The IETF Trust 2009-2020, All Rights Reserved
# Copyright The IETF Trust 2009-2021, All Rights Reserved
# -*- coding: utf-8 -*-
@ -27,6 +27,8 @@ from ietf.iesg.models import TelechatDate
from ietf.name.models import StreamName
from ietf.person.models import Person
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
from ietf.iesg.factories import IESGMgmtItemFactory
class IESGTests(TestCase):
def test_feed(self):
@ -131,6 +133,9 @@ class IESGAgendaTests(TestCase):
telechat_date=date,
returning_item=True)
self.mgmt_items = [ ]
for i in range(0, 10):
self.mgmt_items.append(IESGMgmtItemFactory())
def tearDown(self):
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
@ -141,6 +146,7 @@ class IESGAgendaTests(TestCase):
statchg = self.telechat_docs["statchg"]
conflrev = self.telechat_docs["conflrev"]
charter = self.telechat_docs["charter"]
mgmtitem = self.mgmt_items
# put on agenda
date = datetime.date.today() + datetime.timedelta(days=50)
@ -275,7 +281,6 @@ class IESGAgendaTests(TestCase):
conflrev.set_state(State.objects.get(type="conflrev", slug="needshep"))
self.assertTrue(conflrev in agenda_data(date_str)["sections"]["3.4.3"]["docs"])
# 4 WGs
telechat_event.doc = charter
telechat_event.save()
@ -304,6 +309,11 @@ class IESGAgendaTests(TestCase):
#for n, s in agenda_data(date_str)["sections"].iteritems():
# print n, s.get("docs") if "docs" in s else s["title"]
# 10 Management Items
for i, mi in enumerate(mgmtitem, start=1):
s = "6." + str(i)
self.assertEqual(mi.title, agenda_data(date_str)["sections"][s]['title'])
def test_feed(self):
r = self.client.get("/feed/iesg-agenda/")
self.assertEqual(r.status_code, 200)
@ -338,6 +348,14 @@ class IESGAgendaTests(TestCase):
self.assertContains(r, d.name, msg_prefix="%s '%s' not in response" % (k, d.name))
self.assertContains(r, d.title, msg_prefix="%s '%s' title not in response" % (k, d.title))
for i, mi in enumerate(self.mgmt_items, start=1):
s = "6." + str(i)
self.assertContains(r, s, msg_prefix="Section '%s' not in response" % s)
self.assertContains(r, mi.title, msg_prefix="Management item title '%s' not in response" % mi.title)
# Make sure the sort places 6.9 before 6.10
self.assertLess(r.content.find(b"6.9"), r.content.find(b"6.10"))
def test_agenda_txt(self):
r = self.client.get(urlreverse("ietf.iesg.views.agenda_txt"))
self.assertEqual(r.status_code, 200)
@ -350,6 +368,14 @@ class IESGAgendaTests(TestCase):
self.assertContains(r, d.name, msg_prefix="%s '%s' not in response" % (k, d.name))
self.assertContains(r, d.title, msg_prefix="%s '%s' title not in response" % (k, d.title))
for i, mi in enumerate(self.mgmt_items, start=1):
s = "6." + str(i)
self.assertContains(r, s, msg_prefix="Section '%s' not in response" % s)
self.assertContains(r, mi.title, msg_prefix="Management item title '%s' not in response" % mi.title)
# Make sure the sort places 6.9 before 6.10
self.assertLess(r.content.find(b"6.9"), r.content.find(b"6.10"))
def test_agenda_scribe_template(self):
r = self.client.get(urlreverse("ietf.iesg.views.agenda_scribe_template"))
self.assertEqual(r.status_code, 200)

View file

@ -200,7 +200,7 @@ def agenda(request, date=None):
request.session['ballot_edit_return_point'] = request.path_info
return render(request, "iesg/agenda.html", {
"date": data["date"],
"sections": sorted(data["sections"].items()),
"sections": sorted(data["sections"].items(), key=lambda x:[int(p) for p in x[0].split('.')]),
"settings": settings,
} )
@ -208,7 +208,7 @@ def agenda_txt(request, date=None):
data = agenda_data(date)
return render(request, "iesg/agenda.txt", {
"date": data["date"],
"sections": sorted(data["sections"].items()),
"sections": sorted(data["sections"].items(), key=lambda x:[int(p) for p in x[0].split('.')]),
"domain": Site.objects.get_current().domain,
}, content_type="text/plain; charset=%s"%settings.DEFAULT_CHARSET)