From cd277672d0b28f97cad24eea3325fd7c2d8dece8 Mon Sep 17 00:00:00 2001 From: Borgar Date: Tue, 2 Aug 2011 23:29:34 +0000 Subject: [PATCH] Add a setting to limit feeds to a max number of items. This adds FEED_MAX_ITEMS, which dictates the maximum number of items allowed in a feed. --- docs/settings.rst | 2 ++ pelican/settings.py | 1 + pelican/writers.py | 7 +++++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/settings.rst b/docs/settings.rst index 2bdc891f..e4e2feaf 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -115,6 +115,8 @@ Setting name (default value) what does it do? `TAG_FEED` (``None``, ie no tag feed) relative url to output the tags atom feed. It should be defined using a "%s" matchin the tag name `TAG_FEED_RSS` (``None``, ie no RSS tag feed) relative url to output the tag RSS feed +`FEED_MAX_ITEMS` Maximum number of items allowed in a feed. Feeds are + unrestricted by default. ================================================ ===================================================== .. [2] %s is the name of the category. diff --git a/pelican/settings.py b/pelican/settings.py index db2984e9..e8c4fd21 100644 --- a/pelican/settings.py +++ b/pelican/settings.py @@ -15,6 +15,7 @@ _DEFAULT_CONFIG = {'PATH': None, 'FEED': 'feeds/all.atom.xml', 'CATEGORY_FEED': 'feeds/%s.atom.xml', 'TRANSLATION_FEED': 'feeds/all-%s.atom.xml', + 'FEED_MAX_ITEMS': '', 'SITENAME': 'A Pelican Blog', 'DISPLAY_PAGES_ON_MENU': True, 'PDF_GENERATOR': False, diff --git a/pelican/writers.py b/pelican/writers.py index 13ab9647..4685cff9 100644 --- a/pelican/writers.py +++ b/pelican/writers.py @@ -58,8 +58,11 @@ class Writer(object): feed = self._create_new_feed(feed_type, context) - for item in elements: - self._add_item_to_the_feed(feed, item) + max_items = len(elements) + if self.settings['FEED_MAX_ITEMS']: + max_items = min(self.settings['FEED_MAX_ITEMS'], max_items) + for i in xrange(max_items): + self._add_item_to_the_feed(feed, elements[i]) if filename: complete_path = os.path.join(self.output_path, filename)