# -*- coding: utf-8 -*-
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see
']
#branches, tags, bookmarks
if cs.branch:
desc_msg.append('branch: %s
' % cs.branch)
if h.is_hg(c.rhodecode_repo):
for book in cs.bookmarks:
desc_msg.append('bookmark: %s
' % book)
for tag in cs.tags:
desc_msg.append('tag: %s
' % tag)
diff_processor, changes = self.__changes(cs)
# rev link
_url = url('changeset_home', repo_name=c.rhodecode_db_repo.repo_name,
revision=cs.raw_id, qualified=True)
desc_msg.append('changeset: %s' % (_url, cs.raw_id[:8]))
desc_msg.append('
') desc_msg.append(cs.message) desc_msg.append('\n') desc_msg.extend(changes) if self.include_diff: desc_msg.append('\n\n') desc_msg.append(diff_processor.as_raw()) desc_msg.append('') return map(safe_unicode, desc_msg) def atom(self, repo_name): """Produce an atom-1.0 feed via feedgenerator module""" @cache_region('long_term') def _get_feed_from_cache(key, kind): feed = Atom1Feed( title=self.title % repo_name, link=url('summary_home', repo_name=repo_name, qualified=True), description=self.description % repo_name, language=self.language, ttl=self.ttl ) for cs in reversed(list(c.rhodecode_repo[-self.feed_nr:])): feed.add_item(title=self._get_title(cs), link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), author_name=cs.author, description=''.join(self.__get_desc(cs)), pubdate=cs.date, ) response.content_type = feed.mime_type return feed.writeString('utf-8') 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, kind): feed = Rss201rev2Feed( title=self.title % repo_name, link=url('summary_home', repo_name=repo_name, qualified=True), description=self.description % repo_name, language=self.language, ttl=self.ttl ) for cs in reversed(list(c.rhodecode_repo[-self.feed_nr:])): feed.add_item(title=self._get_title(cs), link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), author_name=cs.author, description=''.join(self.__get_desc(cs)), pubdate=cs.date, ) response.content_type = feed.mime_type return feed.writeString('utf-8') 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)