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