From 721a422e5e65746fc35445fb32b8a4477b8285a7 Mon Sep 17 00:00:00 2001 From: jawher Date: Sat, 20 Oct 2012 16:03:14 +0200 Subject: [PATCH 01/16] The all Atom and RSS feed generators should include all articles, regardless of the article's language or the site's. Fixes #550. --- pelican/generators.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pelican/generators.py b/pelican/generators.py index 01f4701c..2ee9eea8 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -164,12 +164,20 @@ class ArticlesGenerator(Generator): 'Feeds generated without SITEURL set properly may not be valid' ) + # Isuue #550: FEED_ATOM and FEED_RSS should include all articles, regardless of the language + all_articles = list(self.articles) + + for article in self.articles: + all_articles.extend(article.translations) + + all_articles.sort(key=attrgetter('date'), reverse=True) + if self.settings.get('FEED_ATOM'): - writer.write_feed(self.articles, self.context, + writer.write_feed(all_articles, self.context, self.settings['FEED_ATOM']) if self.settings.get('FEED_RSS'): - writer.write_feed(self.articles, self.context, + writer.write_feed(all_articles, self.context, self.settings['FEED_RSS'], feed_type='rss') for cat, arts in self.categories: From 593acfc37a64510b87c744676eaca1b587f32394 Mon Sep 17 00:00:00 2001 From: jawher Date: Sat, 20 Oct 2012 16:53:10 +0200 Subject: [PATCH 02/16] Remove comment --- pelican/generators.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pelican/generators.py b/pelican/generators.py index 2ee9eea8..966bd36c 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -164,7 +164,6 @@ class ArticlesGenerator(Generator): 'Feeds generated without SITEURL set properly may not be valid' ) - # Isuue #550: FEED_ATOM and FEED_RSS should include all articles, regardless of the language all_articles = list(self.articles) for article in self.articles: From c7d87feec31627ae2351950b01cad2a0e30de627 Mon Sep 17 00:00:00 2001 From: jawher Date: Mon, 22 Oct 2012 23:37:52 +0200 Subject: [PATCH 03/16] Reverted FEED_ATOM and FEED_RSS to their original behaviour and added FEED_ALL_ATOM and FEED_ALL_RSS FEED_(ATOM|RSS) generated feeds include the version in the default language of a translated article, whereas FEED_ALL(ATOM|RSS) would include *really* all posts, regardless of their language. --- docs/fr/configuration.rst | 8 +++++++- docs/settings.rst | 7 ++++--- docs/themes.rst | 2 ++ pelican/generators.py | 30 +++++++++++++++++------------- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/docs/fr/configuration.rst b/docs/fr/configuration.rst index 76f03a61..e3fb8542 100644 --- a/docs/fr/configuration.rst +++ b/docs/fr/configuration.rst @@ -59,11 +59,17 @@ CATEGORY_FEED_RSS : Idem pour les flux rss (Optionnel); FEED_ATOM : - Chemin du flux Atom global ; + Chemin du flux Atom global; FEED_RSS : Chemin du flux Rss global (Optionnel); +FEED_ALL_ATOM : + Chemin du flux Atom global qui inclut la totalité des posts, indépendamment de la langue; + +FEED_ALL_RSS : + Chemin du flux Rss global qui inclut la totalité des posts, indépendamment de la langue (Optionnel); + TAG_FEED_ATOM : Chemin des flux Atom pour les tags (Optionnel); diff --git a/docs/settings.rst b/docs/settings.rst index 6bcc7292..eeca4c3a 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -306,6 +306,8 @@ Setting name (default value) What does it do? feeds, you can just set: `FEED_DOMAIN = SITEURL` `FEED_ATOM` (``'feeds/all.atom.xml'``) Relative URL to output the Atom feed. `FEED_RSS` (``None``, i.e. no RSS) Relative URL to output the RSS feed. +`FEED_ALL_ATOM` (``None``, i.e. no all feed) Relative URL to output the all posts Atom feed. +`FEED_ALL_RSS` (``None``, i.e. no all RSS) Relative URL to output the all posts RSS feed. `CATEGORY_FEED_ATOM` ('feeds/%s.atom.xml'[2]_) Where to put the category Atom feeds. `CATEGORY_FEED_RSS` (``None``, i.e. no RSS) Where to put the category RSS feeds. `TAG_FEED_ATOM` (``None``, i.e. no tag feed) Relative URL to output the tag Atom feed. It should @@ -315,9 +317,8 @@ Setting name (default value) What does it do? quantity is unrestricted by default. ================================================ ===================================================== -If you don't want to generate some of these feeds, set ``None`` to the -variables above. If you don't want to generate any feeds set both ``FEED_ATOM`` -and ``FEED_RSS`` to none. +If you don't want to generate some or any of these feeds, set ``None`` to the +variables above. .. [2] %s is the name of the category. diff --git a/docs/themes.rst b/docs/themes.rst index e482bc9b..664b4466 100644 --- a/docs/themes.rst +++ b/docs/themes.rst @@ -200,6 +200,8 @@ Here is a complete list of the feed variables:: FEED_ATOM FEED_RSS + FEED_ALL_ATOM + FEED_ALL_RSS CATEGORY_FEED_ATOM CATEGORY_FEED_RSS TAG_FEED_ATOM diff --git a/pelican/generators.py b/pelican/generators.py index 966bd36c..33316a94 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -156,29 +156,33 @@ class ArticlesGenerator(Generator): def generate_feeds(self, writer): """Generate the feeds from the current context, and output files.""" - if self.settings.get('FEED_ATOM') is None \ - and self.settings.get('FEED_RSS') is None: - return - elif self.settings.get('SITEURL') is '': + if self.settings.get('SITEURL') is '': logger.warning( 'Feeds generated without SITEURL set properly may not be valid' ) - all_articles = list(self.articles) - - for article in self.articles: - all_articles.extend(article.translations) - - all_articles.sort(key=attrgetter('date'), reverse=True) - if self.settings.get('FEED_ATOM'): - writer.write_feed(all_articles, self.context, + writer.write_feed(self.articles, self.context, self.settings['FEED_ATOM']) if self.settings.get('FEED_RSS'): - writer.write_feed(all_articles, self.context, + writer.write_feed(self.articles, self.context, self.settings['FEED_RSS'], feed_type='rss') + if self.settings.get('FEED_ALL_ATOM') or self.settings.get('FEED_ALL_RSS'): + all_articles = list(self.articles) + for article in self.articles: + all_articles.extend(article.translations) + all_articles.sort(key=attrgetter('date'), reverse=True) + + if self.settings.get('FEED_ALL_ATOM'): + writer.write_feed(all_articles, self.context, + self.settings['FEED_ALL_ATOM']) + + if self.settings.get('FEED_ALL_RSS'): + writer.write_feed(all_articles, self.context, + self.settings['FEED_ALL_RSS'], feed_type='rss') + for cat, arts in self.categories: arts.sort(key=attrgetter('date'), reverse=True) if self.settings.get('CATEGORY_FEED_ATOM'): From 559367075996d414c5f0b832cd85ccb07402d4ad Mon Sep 17 00:00:00 2001 From: jawher Date: Thu, 25 Oct 2012 16:49:24 +0200 Subject: [PATCH 04/16] The default settings sets up FEED_ALL_ATOM (instead of FEED_ATOM) to all.atom.xml --- pelican/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pelican/settings.py b/pelican/settings.py index 35752fee..052a58a1 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -24,7 +24,7 @@ _DEFAULT_CONFIG = {'PATH': '.', 'MARKUP': ('rst', 'md'), 'STATIC_PATHS': ['images', ], 'THEME_STATIC_PATHS': ['static', ], - 'FEED_ATOM': 'feeds/all.atom.xml', + 'FEED_ALL_ATOM': 'feeds/all.atom.xml', 'CATEGORY_FEED_ATOM': 'feeds/%s.atom.xml', 'TRANSLATION_FEED_ATOM': 'feeds/all-%s.atom.xml', 'FEED_MAX_ITEMS': '', From 537e9df3ed107360d92ac7153e42aa0c9d773029 Mon Sep 17 00:00:00 2001 From: jawher Date: Thu, 25 Oct 2012 16:50:27 +0200 Subject: [PATCH 05/16] Reworked the "unset feed_domain" warning to handle all feed variables --- pelican/settings.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pelican/settings.py b/pelican/settings.py index 052a58a1..237e8d22 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -175,7 +175,15 @@ def configure_settings(settings): settings['FEED_DOMAIN'] = settings['SITEURL'] # Warn if feeds are generated with both SITEURL & FEED_DOMAIN undefined - if (('FEED_ATOM' in settings) or ('FEED_RSS' in settings)) and (not 'FEED_DOMAIN' in settings): + feed_keys = ['FEED_ATOM', 'FEED_RSS',\ + 'FEED_ALL_ATOM', 'FEED_ALL_RSS',\ + 'CATEGORY_FEED_ATOM', 'CATEGORY_FEED_RSS',\ + 'TAG_FEED_ATOM', 'TAG_FEED_RSS',\ + 'TRANSLATION_FEED_ATOM', 'TRANSLATION_FEED_RSS',\ + ] + + generate_feed = bool([k for k, v in settings.iteritems() if k in feed_keys and v]) + if generate_feed and not('FEED_DOMAIN' in settings): logger.warn("Since feed URLs should always be absolute, you should specify " "FEED_DOMAIN in your settings. (e.g., 'FEED_DOMAIN = " "http://www.example.com')") From 93905e828d5b72bad7361d493e9f2db29d096e60 Mon Sep 17 00:00:00 2001 From: jawher Date: Thu, 25 Oct 2012 16:56:28 +0200 Subject: [PATCH 06/16] Split long if condition in 2 lines --- pelican/generators.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pelican/generators.py b/pelican/generators.py index 33316a94..fc59c905 100644 --- a/pelican/generators.py +++ b/pelican/generators.py @@ -169,7 +169,8 @@ class ArticlesGenerator(Generator): writer.write_feed(self.articles, self.context, self.settings['FEED_RSS'], feed_type='rss') - if self.settings.get('FEED_ALL_ATOM') or self.settings.get('FEED_ALL_RSS'): + if self.settings.get('FEED_ALL_ATOM') or \ + self.settings.get('FEED_ALL_RSS'): all_articles = list(self.articles) for article in self.articles: all_articles.extend(article.translations) From a79904c0751fdc01c24ed22d78147974ced472c7 Mon Sep 17 00:00:00 2001 From: jawher Date: Tue, 30 Oct 2012 11:06:33 +0100 Subject: [PATCH 07/16] Update the generators tests to use FEED_ALL_ATOM as the default set atom feed instead of FEED_ATOM --- tests/test_generators.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_generators.py b/tests/test_generators.py index accdb699..a4c047aa 100644 --- a/tests/test_generators.py +++ b/tests/test_generators.py @@ -50,14 +50,14 @@ class TestArticlesGenerator(unittest.TestCase): def test_generate_feeds(self): - generator = ArticlesGenerator(None, {'FEED_ATOM': _DEFAULT_CONFIG['FEED_ATOM']}, + generator = ArticlesGenerator(None, {'FEED_ALL_ATOM': _DEFAULT_CONFIG['FEED_ALL_ATOM']}, None, _DEFAULT_CONFIG['THEME'], None, _DEFAULT_CONFIG['MARKUP']) writer = MagicMock() generator.generate_feeds(writer) writer.write_feed.assert_called_with([], None, 'feeds/all.atom.xml') - generator = ArticlesGenerator(None, {'FEED_ATOM': None}, None, + generator = ArticlesGenerator(None, {'FEED_ALL_ATOM': None}, None, _DEFAULT_CONFIG['THEME'], None, None) writer = MagicMock() generator.generate_feeds(writer) From fd18f2efa98bcd02595658b23039946968eec57d Mon Sep 17 00:00:00 2001 From: jawher Date: Tue, 30 Oct 2012 21:05:57 +0100 Subject: [PATCH 08/16] Generate links for FEED_ALL_ATOM and FEED_ALL_RSS in the simple them's head. --- pelican/themes/simple/templates/base.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pelican/themes/simple/templates/base.html b/pelican/themes/simple/templates/base.html index c1d9cb78..3ea2e8b9 100644 --- a/pelican/themes/simple/templates/base.html +++ b/pelican/themes/simple/templates/base.html @@ -4,6 +4,12 @@ {% block head %} {% block title %}{{ SITENAME }}{% endblock title %} + {% if FEED_ALL_ATOM %} + + {% endif %} + {% if FEED_ALL_RSS %} + + {% endif %} {% if FEED_ATOM %} {% endif %} From b6db45420c7edbd495344fe986d468b030e9a5ee Mon Sep 17 00:00:00 2001 From: jawher Date: Tue, 30 Oct 2012 21:06:43 +0100 Subject: [PATCH 09/16] Default to using FEED_ALL_ATOM instead of FEED_ATOM (and likewise for RSS) in the notmyidea theme --- pelican/themes/notmyidea/templates/base.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pelican/themes/notmyidea/templates/base.html b/pelican/themes/notmyidea/templates/base.html index 6ab87c5a..45c2c3a2 100644 --- a/pelican/themes/notmyidea/templates/base.html +++ b/pelican/themes/notmyidea/templates/base.html @@ -4,11 +4,11 @@ {% block title %}{{ SITENAME }}{%endblock%} - {% if FEED_ATOM %} - + {% if FEED_ALL_ATOM %} + {% endif %} - {% if FEED_RSS %} - + {% if FEED_ALL_RSS %} + {% endif %}