diff --git a/rhodecode/controllers/feed.py b/rhodecode/controllers/feed.py --- a/rhodecode/controllers/feed.py +++ b/rhodecode/controllers/feed.py @@ -76,8 +76,8 @@ class FeedController(BaseRepoController) limited_diff = True for st in _parsed: - st.update({'added': st['stats'][0], - 'removed': st['stats'][1]}) + st.update({'added': st['stats']['added'], + 'removed': st['stats']['deleted']}) changes.append('\n %(operation)s %(filename)s ' '(%(added)s lines added, %(removed)s lines removed)' % st) @@ -87,9 +87,8 @@ class FeedController(BaseRepoController) return diff_processor, changes def __get_desc(self, cs): - desc_msg = [] - desc_msg.append((_('%s committed on %s') - % (h.person(cs.author), h.fmt_date(cs.date))) + '
') + desc_msg = [(_('%s committed on %s') + % (h.person(cs.author), h.fmt_date(cs.date))) + '
'] #branches, tags, bookmarks if cs.branch: desc_msg.append('branch: %s
' % cs.branch) @@ -118,7 +117,7 @@ class FeedController(BaseRepoController) """Produce an atom-1.0 feed via feedgenerator module""" @cache_region('long_term') - def _get_feed_from_cache(key): + def _get_feed_from_cache(key, kind): feed = Atom1Feed( title=self.title % repo_name, link=url('summary_home', repo_name=repo_name, @@ -140,18 +139,17 @@ class FeedController(BaseRepoController) response.content_type = feed.mime_type return feed.writeString('utf-8') - key = repo_name + '_ATOM' - inv = CacheInvalidation.invalidate(key) - if inv is not None: - region_invalidate(_get_feed_from_cache, None, key) - CacheInvalidation.set_valid(inv.cache_key) - return _get_feed_from_cache(key) + kind = 'ATOM' + valid = CacheInvalidation.test_and_set_valid(repo_name, kind) + if not valid: + region_invalidate(_get_feed_from_cache, None, repo_name, kind) + return _get_feed_from_cache(repo_name, kind) def rss(self, repo_name): """Produce an rss2 feed via feedgenerator module""" @cache_region('long_term') - def _get_feed_from_cache(key): + def _get_feed_from_cache(key, kind): feed = Rss201rev2Feed( title=self.title % repo_name, link=url('summary_home', repo_name=repo_name, @@ -173,9 +171,8 @@ class FeedController(BaseRepoController) response.content_type = feed.mime_type return feed.writeString('utf-8') - key = repo_name + '_RSS' - inv = CacheInvalidation.invalidate(key) - if inv is not None: - region_invalidate(_get_feed_from_cache, None, key) - CacheInvalidation.set_valid(inv.cache_key) - return _get_feed_from_cache(key) + kind = 'RSS' + valid = CacheInvalidation.test_and_set_valid(repo_name, kind) + if not valid: + region_invalidate(_get_feed_from_cache, None, repo_name, kind) + return _get_feed_from_cache(repo_name, kind)