Skip to content

Commit 5021ed5

Browse files
committed
Port feed setup to new feed API where each feed is a class-based view
- Legacy-Id: 6939
1 parent d867896 commit 5021ed5

18 files changed

+60
-73
lines changed

ietf/doc/feeds.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,11 @@
1313
from ietf.doc.utils import augment_events_with_revision
1414
from ietf.doc.templatetags.ietf_filters import format_textarea
1515

16-
class DocumentChanges(Feed):
16+
class DocumentChangesFeed(Feed):
1717
feed_type = Atom1Feed
1818

19-
def get_object(self, bits):
20-
if len(bits) != 1:
21-
raise Document.DoesNotExist
22-
23-
return Document.objects.get(docalias__name=bits[0])
19+
def get_object(self, request, name):
20+
return Document.objects.get(docalias__name=name)
2421

2522
def title(self, obj):
2623
return "Changes for %s" % obj.display_name()
@@ -55,7 +52,7 @@ def item_author_name(self, item):
5552
def item_link(self, item):
5653
return self.cached_link + "#history-%s" % item.pk
5754

58-
class InLastCall(Feed):
55+
class InLastCallFeed(Feed):
5956
title = "Documents in Last Call"
6057
subtitle = "Announcements for documents in last call."
6158
feed_type = Atom1Feed

ietf/feed_urls.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.conf.urls import patterns, url
2+
from django.views.generic import RedirectView
3+
4+
from ietf.doc.feeds import DocumentChangesFeed, InLastCallFeed
5+
from ietf.wgcharter.feeds import GroupChangesFeed
6+
from ietf.iesg.feeds import IESGAgendaFeed
7+
from ietf.ipr.feeds import LatestIprDisclosuresFeed
8+
from ietf.liaisons.feeds import LiaisonStatementsFeed
9+
from ietf.meeting.feeds import LatestMeetingMaterialFeed
10+
11+
urlpatterns = patterns(
12+
'',
13+
(r'^comments/(?P<remainder>.*)/$', RedirectView.as_view(url='/feed/document-changes/%(remainder)s/')),
14+
(r'^document-changes/(?P<name>[A-Za-z0-9._+-]+)/$', DocumentChangesFeed()),
15+
(r'^last-call/$', InLastCallFeed()),
16+
(r'^group-changes/(?P<acronym>[a-zA-Z0-9-]+)/$', GroupChangesFeed()),
17+
(r'^iesg-agenda/$', IESGAgendaFeed()),
18+
(r'^ipr/$', LatestIprDisclosuresFeed()),
19+
(r'^liaison/(?P<kind>recent|from|to|subject)/(?:(?P<search>[^/]+)/)?$', LiaisonStatementsFeed()),
20+
(r'^wg-proceedings/$', LatestMeetingMaterialFeed()),
21+
)

ietf/iesg/feeds.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
1-
# Copyright The IETF Trust 2007, 2008, All Rights Reserved
2-
31
import datetime
42

5-
from django.conf import settings
63
from django.contrib.syndication.views import Feed
74
from django.utils.feedgenerator import Atom1Feed
85

9-
from ietf.doc.models import Document
6+
from ietf.doc.models import Document, TelechatDocEvent
107

11-
class IESGAgenda(Feed):
8+
class IESGAgendaFeed(Feed):
129
title = "Documents on Future IESG Telechat Agendas"
13-
link = settings.IDTRACKER_BASE_URL + "/iesg/agenda/"
10+
link = "/iesg/agenda/"
1411
feed_type = Atom1Feed
12+
description_template = "iesg/feed_item_description.html"
1513

1614
def items(self):
17-
from ietf.doc.models import TelechatDocEvent
1815
docs = Document.objects.filter(docevent__telechatdocevent__telechat_date__gte=datetime.date.today()).distinct()
1916
for d in docs:
2017
d.latest_telechat_event = d.latest_event(TelechatDocEvent, type="scheduled_for_telechat")
@@ -23,7 +20,7 @@ def items(self):
2320
return docs
2421

2522
def item_categories(self, doc):
26-
return [ str(doc.telechat_date) ]
23+
return [ str(doc.latest_telechat_event.time.date()) ]
2724

2825
def item_pubdate(self, doc):
2926
return doc.latest_telechat_event.time

ietf/iesg/tests.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,7 @@ def test_fill_in_agenda_docs(self):
231231
# print n, s.get("docs") if "docs" in s else s["title"]
232232

233233
def test_feed(self):
234-
url = "/feed/iesg-agenda/"
235-
236-
r = self.client.get(url)
234+
r = self.client.get("/feed/iesg-agenda/")
237235
self.assertEquals(r.status_code, 200)
238236

239237
for d in self.telechat_docs.values():

ietf/meeting/feeds.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
from django.contrib.syndication.views import Feed
44
from django.utils.feedgenerator import Atom1Feed
55
from django.conf import settings
6+
from django.utils.html import escape
67

78
from ietf.doc.models import Document
89

9-
class LatestMeetingMaterial(Feed):
10+
class LatestMeetingMaterialFeed(Feed):
1011
feed_type = Atom1Feed
1112
link = "/meeting/"
1213
language = "en"
13-
feed_url = "/feed/wg-proceedings/"
1414
base_url = "http://www3.ietf.org/proceedings/"
1515

1616
def items(self):
@@ -30,6 +30,12 @@ def items(self):
3030
def title(self, obj):
3131
return "Meeting Materials Activity"
3232

33+
def item_title(self, item):
34+
return u"%s: %s" % (item["group_acronym"], escape(item["title"]))
35+
36+
def item_description(self, item):
37+
return ""
38+
3339
def item_link(self, item):
3440
return item['link']
3541

ietf/templates/feeds/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

ietf/templates/feeds/group_description.html

Lines changed: 0 additions & 3 deletions
This file was deleted.

ietf/templates/feeds/ipr_description.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

ietf/templates/feeds/ipr_title.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

ietf/templates/feeds/liaison_description.html

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)