Mercurial > kallithea
changeset 3028:30a226406fa4 beta
Implemented #661 Add option to include diff in RSS feed
also include RSS item per page and cut_off_limit size in .ini options
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 26 Nov 2012 20:14:12 +0100 |
parents | 8572e1826220 |
children | 685ebc84c2e9 |
files | development.ini production.ini rhodecode/config/deployment.ini_tmpl rhodecode/controllers/feed.py |
diffstat | 4 files changed, 34 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/development.ini Mon Nov 26 15:20:49 2012 +0800 +++ b/development.ini Mon Nov 26 20:14:12 2012 +0100 @@ -65,6 +65,13 @@ commit_parse_limit = 25 use_gravatar = true +## RSS feed options + +rss_cut_off_limit = 256000 +rss_items_per_page = 10 +rss_include_diff = false + + ## alternative_gravatar_url allows you to use your own avatar server application ## the following parts of the URL will be replaced ## {email} user email
--- a/production.ini Mon Nov 26 15:20:49 2012 +0800 +++ b/production.ini Mon Nov 26 20:14:12 2012 +0100 @@ -65,6 +65,13 @@ commit_parse_limit = 50 use_gravatar = true +## RSS feed options + +rss_cut_off_limit = 256000 +rss_items_per_page = 10 +rss_include_diff = false + + ## alternative_gravatar_url allows you to use your own avatar server application ## the following parts of the URL will be replaced ## {email} user email
--- a/rhodecode/config/deployment.ini_tmpl Mon Nov 26 15:20:49 2012 +0800 +++ b/rhodecode/config/deployment.ini_tmpl Mon Nov 26 20:14:12 2012 +0100 @@ -65,6 +65,13 @@ commit_parse_limit = 50 use_gravatar = true +## RSS feed options + +rss_cut_off_limit = 256000 +rss_items_per_page = 10 +rss_include_diff = false + + ## alternative_gravatar_url allows you to use your own avatar server application ## the following parts of the URL will be replaced ## {email} user email
--- a/rhodecode/controllers/feed.py Mon Nov 26 15:20:49 2012 +0800 +++ b/rhodecode/controllers/feed.py Mon Nov 26 20:14:12 2012 +0100 @@ -36,6 +36,7 @@ from rhodecode.lib.base import BaseRepoController from rhodecode.lib.diffs import DiffProcessor, LimitedDiffContainer from rhodecode.model.db import CacheInvalidation +from rhodecode.lib.utils2 import safe_int, str2bool log = logging.getLogger(__name__) @@ -52,10 +53,13 @@ self.title = self.title = _('%s %s feed') % (c.rhodecode_name, '%s') self.language = 'en-us' self.ttl = "5" - self.feed_nr = 20 + import rhodecode + CONF = rhodecode.CONFIG + self.include_diff = str2bool(CONF.get('rss_include_diff', False)) + self.feed_nr = safe_int(CONF.get('rss_items_per_page', 20)) # we need to protect from parsing huge diffs here other way - # we can kill the server, 32*1024 chars is a reasonable limit - self.feed_diff_limit = 32 * 1024 + # we can kill the server + self.feed_diff_limit = safe_int(CONF.get('rss_cut_off_limit'), 32 * 1024) def _get_title(self, cs): return "%s" % ( @@ -80,7 +84,7 @@ if limited_diff: changes = changes + ['\n ' + _('Changeset was too big and was cut off...')] - return changes + return diff_processor, changes def __get_desc(self, cs): desc_msg = [] @@ -95,6 +99,7 @@ desc_msg.append('bookmark: %s<br/>' % book) for tag in cs.tags: desc_msg.append('tag: %s<br/>' % tag) + diff_processor, changes = self.__changes(cs) # rev link _url = url('changeset_home', repo_name=cs.repository.name, revision=cs.raw_id, qualified=True) @@ -103,7 +108,10 @@ desc_msg.append('<pre>') desc_msg.append(cs.message) desc_msg.append('\n') - desc_msg.extend(self.__changes(cs)) + desc_msg.extend(changes) + if self.include_diff: + desc_msg.append('\n\n') + desc_msg.append(diff_processor.as_raw()) desc_msg.append('</pre>') return desc_msg