From 5c6ee01bf74aafdc0aa4024397b14164d713741c Mon Sep 17 00:00:00 2001 From: Ole Laursen Date: Mon, 30 Sep 2013 12:17:38 +0000 Subject: [PATCH] drafts -> docs in /feed/iesg-agenda/ since we're returning more than just I-Ds, sort by latest first, limit to documents on current and future telechats (as the description says) to speed it up, add simple test of the feed - Legacy-Id: 6312 --- ietf/iesg/feeds.py | 34 +++++++++++++++++-------------- ietf/iesg/tests.py | 51 ++++++++++++++++++++++++---------------------- 2 files changed, 46 insertions(+), 39 deletions(-) diff --git a/ietf/iesg/feeds.py b/ietf/iesg/feeds.py index 72c77ebd1..a17441f03 100644 --- a/ietf/iesg/feeds.py +++ b/ietf/iesg/feeds.py @@ -8,27 +8,31 @@ import datetime class IESGAgenda(Feed): title = "Documents on Future IESG Telechat Agendas" - link = "http://datatracker.ietf.org/iesg/agenda/" + link = settings.IDTRACKER_BASE_URL + "/iesg/agenda/" feed_type = Atom1Feed def items(self): from ietf.doc.models import TelechatDocEvent - drafts = Document.objects.filter(docevent__telechatdocevent__telechat_date__gte=datetime.date.min).distinct() - for d in drafts: + docs = Document.objects.filter(docevent__telechatdocevent__telechat_date__gte=datetime.date.today()).distinct() + for d in docs: d.latest_telechat_event = d.latest_event(TelechatDocEvent, type="scheduled_for_telechat") - drafts = [d for d in drafts if d.latest_telechat_event.telechat_date] - drafts.sort(key=lambda d: d.latest_telechat_event.telechat_date) - return drafts + docs = [d for d in docs if d.latest_telechat_event.telechat_date] + docs.sort(key=lambda d: d.latest_telechat_event.telechat_date, reverse=True) + return docs + def item_categories(self, doc): + return [ str(doc.telechat_date) ] - def item_categories(self, item): - return [ str(item.telechat_date) ] - - def item_pubdate(self, item): - return item.latest_telechat_event.time + def item_pubdate(self, doc): + return doc.latest_telechat_event.time - def item_author_name(self, item): - return str( item.ad ) if item.ad else "None" + def item_author_name(self, doc): + return doc.ad.plain_name() if doc.ad else "None" - def item_author_email(self, item): - return str( item.ad.role_email("ad") ) if item.ad else "" + def item_author_email(self, doc): + if not doc.ad: + return "" + e = doc.ad.role_email("ad") + if not e: + return "" + return e.address diff --git a/ietf/iesg/tests.py b/ietf/iesg/tests.py index a6302338e..2eaec76f3 100644 --- a/ietf/iesg/tests.py +++ b/ietf/iesg/tests.py @@ -1,4 +1,3 @@ -from datetime import timedelta import os, shutil import django.test @@ -7,16 +6,38 @@ from django.conf import settings from pyquery import PyQuery -from ietf.idtracker.models import * +from ietf.utils.test_data import make_test_data +from ietf.doc.models import Document, TelechatDocEvent, State +from ietf.person.models import Person +from ietf.group.models import Group from ietf.iesg.models import * from ietf.utils.test_utils import SimpleUrlTestCase, RealDatabaseTest, canonicalize_feed, login_testing_unauthorized +class IESGAgendaTests(django.test.TestCase): + def test_feed(self): + draft = make_test_data() + + url = "/feed/iesg-agenda/" + + r = self.client.get(url) + self.assertEquals(r.status_code, 200) + self.assertTrue(draft.name not in r.content) + + # add to schedule + e = TelechatDocEvent(type="scheduled_for_telechat") + e.doc = draft + e.by = Person.objects.get(name="Aread Irector") + e.telechat_date = TelechatDate.objects.active()[0].date + e.returning_item = True + e.save() + + r = self.client.get(url) + self.assertEquals(r.status_code, 200) + self.assertTrue(draft.name in r.content) + self.assertTrue(draft.title in r.content) + class RescheduleOnAgendaTestCase(django.test.TestCase): def test_reschedule(self): - from ietf.utils.test_data import make_test_data - from ietf.person.models import Person - from ietf.doc.models import TelechatDocEvent - draft = make_test_data() # add to schedule @@ -82,8 +103,6 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase): def test_working_group_actions(self): - from ietf.utils.test_data import make_test_data - make_test_data() url = urlreverse('iesg_working_group_actions') @@ -98,8 +117,6 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase): self.assertTrue('(sieve)' in r.content) def test_delete_wgaction(self): - from ietf.utils.test_data import make_test_data - make_test_data() wga = WGAction.objects.all()[0] @@ -111,9 +128,6 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase): self.assertTrue(not WGAction.objects.filter(pk=wga.pk)) def test_edit_wgaction(self): - from ietf.utils.test_data import make_test_data - from ietf.person.models import Person - make_test_data() wga = WGAction.objects.all()[0] @@ -146,10 +160,6 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase): self.assertEquals(wga.telechat_date, dates[3].date) def test_add_possible_wg(self): - from ietf.utils.test_data import make_test_data - from ietf.person.models import Person - from ietf.group.models import Group - make_test_data() url = urlreverse('iesg_working_group_actions') @@ -191,8 +201,6 @@ class WorkingGroupActionsTestCaseREDESIGN(django.test.TestCase): self.assertEquals(wgas_before + 1, WGAction.objects.all().count()) def test_delete_possible_wg(self): - from ietf.utils.test_data import make_test_data - make_test_data() url = urlreverse('iesg_working_group_actions') @@ -214,10 +222,6 @@ class IesgUrlTestCase(SimpleUrlTestCase): else: return content -#Tests added since database redesign that speak the new clases - -from ietf.doc.models import Document,TelechatDocEvent,State -from ietf.group.models import Person class DeferUndeferTestCase(django.test.TestCase): def helper_test_defer(self,name): @@ -313,5 +317,4 @@ class DeferUndeferTestCase(django.test.TestCase): # when charters support being deferred, be sure to test them here def setUp(self): - from ietf.utils.test_data import make_test_data make_test_data()