Mercurial > kallithea
diff rhodecode/controllers/feed.py @ 1512:bf263968da47
merge beta in stable branch
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 07 Oct 2011 01:08:50 +0200 |
parents | 0dc8d578ff49 54fc83f2192c |
children | 82a88013a3fd |
line wrap: on
line diff
--- a/rhodecode/controllers/feed.py Thu May 12 19:50:48 2011 +0200 +++ b/rhodecode/controllers/feed.py Fri Oct 07 01:08:50 2011 +0200 @@ -25,64 +25,92 @@ import logging -from pylons import url, response +from pylons import url, response, tmpl_context as c +from pylons.i18n.translation import _ +from rhodecode.lib import safe_unicode from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator -from rhodecode.lib.base import BaseController -from rhodecode.model.scm import ScmModel +from rhodecode.lib.base import BaseRepoController from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed log = logging.getLogger(__name__) -class FeedController(BaseController): - @LoginRequired() +class FeedController(BaseRepoController): + + @LoginRequired(api_access=True) @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin') def __before__(self): super(FeedController, self).__before__() #common values for feeds - self.description = 'Changes on %s repository' - self.title = "%s feed" + self.description = _('Changes on %s repository') + self.title = self.title = _('%s %s feed') % (c.rhodecode_name, '%s') self.language = 'en-us' self.ttl = "5" self.feed_nr = 10 + def __changes(self, cs): + changes = [] + + a = [safe_unicode(n.path) for n in cs.added] + if a: + changes.append('\nA ' + '\nA '.join(a)) + + m = [safe_unicode(n.path) for n in cs.changed] + if m: + changes.append('\nM ' + '\nM '.join(m)) + + d = [safe_unicode(n.path) for n in cs.removed] + if d: + changes.append('\nD ' + '\nD '.join(d)) + + changes.append('</pre>') + + return ''.join(changes) + def atom(self, repo_name): """Produce an atom-1.0 feed via feedgenerator module""" feed = Atom1Feed(title=self.title % repo_name, - link=url('summary_home', repo_name=repo_name, qualified=True), + link=url('summary_home', repo_name=repo_name, + qualified=True), description=self.description % repo_name, language=self.language, ttl=self.ttl) + desc_msg = [] + for cs in reversed(list(c.rhodecode_repo[-self.feed_nr:])): + desc_msg.append('%s - %s<br/><pre>' % (cs.author, cs.date)) + desc_msg.append(self.__changes(cs)) - changesets = ScmModel().get_repo(repo_name) - - for cs in changesets[:self.feed_nr]: feed.add_item(title=cs.message, link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), - description=str(cs.date)) + author_name=cs.author, + description=''.join(desc_msg)) response.content_type = feed.mime_type return feed.writeString('utf-8') - def rss(self, repo_name): """Produce an rss2 feed via feedgenerator module""" feed = Rss201rev2Feed(title=self.title % repo_name, - link=url('summary_home', repo_name=repo_name, qualified=True), + link=url('summary_home', repo_name=repo_name, + qualified=True), description=self.description % repo_name, language=self.language, ttl=self.ttl) + desc_msg = [] + for cs in reversed(list(c.rhodecode_repo[-self.feed_nr:])): + desc_msg.append('%s - %s<br/><pre>' % (cs.author, cs.date)) + desc_msg.append(self.__changes(cs)) - changesets = ScmModel().get_repo(repo_name) - for cs in changesets[:self.feed_nr]: feed.add_item(title=cs.message, link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), - description=str(cs.date)) + author_name=cs.author, + description=''.join(desc_msg), + ) response.content_type = feed.mime_type return feed.writeString('utf-8')