Adding an Atom RSS feed for all media on the server

Go to /atom/ in your browser to see it.
This commit is contained in:
Sebastian Spaeth 2012-03-27 15:58:58 -05:00 committed by Christopher Allan Webber
parent cde7a07d5e
commit b624ca0f8b
2 changed files with 19 additions and 10 deletions

View File

@ -19,5 +19,10 @@ from mediagoblin.tools.routing import add_route
add_route('mediagoblin.listings.tags_listing',
"/tag/<string:tag>/",
"mediagoblin.listings.views:tag_listing")
# Atom feeds:
add_route('mediagoblin.listings.tag_atom_feed', "/tag/<string:tag>/atom/",
"mediagoblin.listings.views:tag_atom_feed")
# The all new entries feed
add_route('mediagoblin.listings.atom_feed', '/atom/',
"mediagoblin.listings.views:tag_atom_feed")

View File

@ -68,22 +68,26 @@ def tag_atom_feed(request):
"""
generates the atom feed with the tag images
"""
tag_slug = request.matchdict[u'tag']
tag_slug = request.matchdict.get(u'tag')
feed_title = "MediaGoblin Feed"
if tag_slug:
cursor = media_entries_for_tag_slug(request.db, tag_slug)
link = request.urlgen('mediagoblin.listings.tags_listing',
qualified=True, tag=tag_slug )
feed_title += "for tag '%s'" % tag_slug,
else: # all recent item feed
cursor = MediaEntry.query.filter_by(state=u'processed')
link = request.urlgen('index', qualified=True)
feed_title += "for all recent items"
cursor = media_entries_for_tag_slug(request.db, tag_slug)
cursor = cursor.order_by(MediaEntry.created.desc())
cursor = cursor.limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS)
"""
ATOM feed id is a tag URI (see http://en.wikipedia.org/wiki/Tag_URI)
"""
feed = AtomFeed(
"MediaGoblin: Feed for tag '%s'" % tag_slug,
feed_title,
feed_url=request.url,
id='tag:'+request.host+',2011:gallery.tag-%s' % tag_slug,
links=[{'href': request.urlgen(
'mediagoblin.listings.tags_listing',
qualified=True, tag=tag_slug ),
id=link,
links=[{'href': link,
'rel': 'alternate',
'type': 'text/html'}])
for entry in cursor: