1
0
Fork 0
forked from github/pelican

Fix #1291: Feeds have ambiguous titles on sites with multiple categories.

This commit is contained in:
davidlesieur 2014-09-15 19:58:31 -04:00 committed by Chris Krycho
commit 3b6d059eac
2 changed files with 17 additions and 11 deletions

View file

@ -309,24 +309,26 @@ class ArticlesGenerator(CachingGenerator):
if self.settings.get('CATEGORY_FEED_ATOM'):
writer.write_feed(arts, self.context,
self.settings['CATEGORY_FEED_ATOM']
% cat.slug)
% cat.slug, feed_title=cat.name)
if self.settings.get('CATEGORY_FEED_RSS'):
writer.write_feed(arts, self.context,
self.settings['CATEGORY_FEED_RSS']
% cat.slug, feed_type='rss')
% cat.slug, feed_title=cat.name,
feed_type='rss')
for auth, arts in self.authors:
arts.sort(key=attrgetter('date'), reverse=True)
if self.settings.get('AUTHOR_FEED_ATOM'):
writer.write_feed(arts, self.context,
self.settings['AUTHOR_FEED_ATOM']
% auth.slug)
% auth.slug, feed_title=auth.name)
if self.settings.get('AUTHOR_FEED_RSS'):
writer.write_feed(arts, self.context,
self.settings['AUTHOR_FEED_RSS']
% auth.slug, feed_type='rss')
% auth.slug, feed_title=auth.name,
feed_type='rss')
if (self.settings.get('TAG_FEED_ATOM') or
self.settings.get('TAG_FEED_RSS')):
@ -335,12 +337,12 @@ class ArticlesGenerator(CachingGenerator):
if self.settings.get('TAG_FEED_ATOM'):
writer.write_feed(arts, self.context,
self.settings['TAG_FEED_ATOM']
% tag.slug)
% tag.slug, feed_title=tag.name)
if self.settings.get('TAG_FEED_RSS'):
writer.write_feed(arts, self.context,
self.settings['TAG_FEED_RSS'] % tag.slug,
feed_type='rss')
feed_title=tag.name, feed_type='rss')
if (self.settings.get('TRANSLATION_FEED_ATOM') or
self.settings.get('TRANSLATION_FEED_RSS')):

View file

@ -31,11 +31,14 @@ class Writer(object):
self._written_files = set()
self._overridden_files = set()
def _create_new_feed(self, feed_type, context):
def _create_new_feed(self, feed_type, feed_title, context):
feed_class = Rss201rev2Feed if feed_type == 'rss' else Atom1Feed
sitename = Markup(context['SITENAME']).striptags()
if feed_title:
feed_title = context['SITENAME'] + ' - ' + feed_title
else:
feed_title = context['SITENAME']
feed = feed_class(
title=sitename,
title=Markup(feed_title).striptags(),
link=(self.site_url + '/'),
feed_url=self.feed_url,
description=context.get('SITESUBTITLE', ''))
@ -84,7 +87,7 @@ class Writer(object):
return open(filename, 'w', encoding=encoding)
def write_feed(self, elements, context, path=None, feed_type='atom',
override_output=False):
override_output=False, feed_title=None):
"""Generate a feed with the list of articles provided
Return the feed. If no path or output_path is specified, just
@ -97,6 +100,7 @@ class Writer(object):
:param override_output: boolean telling if we can override previous
output with the same name (and if next files written with the same
name should be skipped to keep that one)
:param feed_title: the title of the feed.o
"""
if not is_selected_for_writing(self.settings, path):
return
@ -107,7 +111,7 @@ class Writer(object):
self.feed_domain = context.get('FEED_DOMAIN')
self.feed_url = '{}/{}'.format(self.feed_domain, path)
feed = self._create_new_feed(feed_type, context)
feed = self._create_new_feed(feed_type, feed_title, context)
max_items = len(elements)
if self.settings['FEED_MAX_ITEMS']: