##// END OF EJS Templates
merge 1.3 into stable
merge 1.3 into stable

File last commit:

r2031:82a88013 merge default
r2031:82a88013 merge default
Show More
feed.py
127 lines | 4.4 KiB | text/x-python | PythonLexer
updated docs on every controller
r861 # -*- coding: utf-8 -*-
"""
rhodecode.controllers.feed
~~~~~~~~~~~~~~~~~~~~~~~~~~
Feed controller for rhodecode
source code cleanup: remove trailing white space, normalize file endings
r1203
updated docs on every controller
r861 :created_on: Apr 23, 2010
:author: marcink
2012 copyrights
r1824 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com>
updated docs on every controller
r861 :license: GPLv3, see COPYING for more details.
"""
fixed license issue #149
r1206 # 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.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # 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.
source code cleanup: remove trailing white space, normalize file endings
r1203 #
renamed project to rhodecode
r547 # You should have received a copy of the GNU General Public License
fixed license issue #149
r1206 # along with this program. If not, see <http://www.gnu.org/licenses/>.
updated docs on every controller
r861
import logging
another major codes rewrite:...
r1045 from pylons import url, response, tmpl_context as c
another major code rafactor, reimplemented (almost from scratch)...
r1038 from pylons.i18n.translation import _
security bugfix: protected feeds, from unauthorized access, even without this, the feeds would crash and were unreadable, But proper way of securing it is with the secure decarators.
r862
fixes #183 decoding of paths in changes
r1295 from rhodecode.lib import safe_unicode
security bugfix: protected feeds, from unauthorized access, even without this, the feeds would crash and were unreadable, But proper way of securing it is with the secure decarators.
r862 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
another major codes rewrite:...
r1045 from rhodecode.lib.base import BaseRepoController
security bugfix: protected feeds, from unauthorized access, even without this, the feeds would crash and were unreadable, But proper way of securing it is with the secure decarators.
r862
renamed project to rhodecode
r547 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
updated docs on every controller
r861
renamed project to rhodecode
r547 log = logging.getLogger(__name__)
pep8ify
r1212
another major codes rewrite:...
r1045 class FeedController(BaseRepoController):
updated docs on every controller
r861
fixed some bugs in api key auth, added access by api key into rss/atom feeds in global journal...
r1120 @LoginRequired(api_access=True)
security bugfix: protected feeds, from unauthorized access, even without this, the feeds would crash and were unreadable, But proper way of securing it is with the secure decarators.
r862 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
'repository.admin')
renamed project to rhodecode
r547 def __before__(self):
super(FeedController, self).__before__()
#common values for feeds
another major code rafactor, reimplemented (almost from scratch)...
r1038 self.description = _('Changes on %s repository')
made simple global rss and atom feed
r1088 self.title = self.title = _('%s %s feed') % (c.rhodecode_name, '%s')
renamed project to rhodecode
r547 self.language = 'en-us'
self.ttl = "5"
self.feed_nr = 10
added short_id to feeds, and made it more compact
r1897 def _get_title(self, cs):
return "R%s:%s - %s" % (
cs.revision, cs.short_id, cs.message
)
fixed wrong order of changes in feeds...
r1162 def __changes(self, cs):
Removed all string concat for exchange of ''.join()
r1359 changes = []
fixed wrong order of changes in feeds...
r1162
fixes #183 decoding of paths in changes
r1295 a = [safe_unicode(n.path) for n in cs.added]
fixed wrong order of changes in feeds...
r1162 if a:
Removed all string concat for exchange of ''.join()
r1359 changes.append('\nA ' + '\nA '.join(a))
fixed wrong order of changes in feeds...
r1162
fixes #183 decoding of paths in changes
r1295 m = [safe_unicode(n.path) for n in cs.changed]
fixed wrong order of changes in feeds...
r1162 if m:
Removed all string concat for exchange of ''.join()
r1359 changes.append('\nM ' + '\nM '.join(m))
fixed wrong order of changes in feeds...
r1162
fixes #183 decoding of paths in changes
r1295 d = [safe_unicode(n.path) for n in cs.removed]
fixed wrong order of changes in feeds...
r1162 if d:
Removed all string concat for exchange of ''.join()
r1359 changes.append('\nD ' + '\nD '.join(d))
fixed wrong order of changes in feeds...
r1162
Removed all string concat for exchange of ''.join()
r1359 changes.append('</pre>')
fixed wrong order of changes in feeds...
r1162
Removed all string concat for exchange of ''.join()
r1359 return ''.join(changes)
fixed wrong order of changes in feeds...
r1162
renamed project to rhodecode
r547 def atom(self, repo_name):
"""Produce an atom-1.0 feed via feedgenerator module"""
added short_id to feeds, and made it more compact
r1897 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
)
fixed wrong order of changes in feeds...
r1162 for cs in reversed(list(c.rhodecode_repo[-self.feed_nr:])):
added short_id to feeds, and made it more compact
r1897 desc_msg = []
Removed all string concat for exchange of ''.join()
r1359 desc_msg.append('%s - %s<br/><pre>' % (cs.author, cs.date))
desc_msg.append(self.__changes(cs))
fixed wrong order of changes in feeds...
r1162
added short_id to feeds, and made it more compact
r1897 feed.add_item(title=self._get_title(cs),
renamed project to rhodecode
r547 link=url('changeset_home', repo_name=repo_name,
Fixes for raw_id, needed for git...
r636 revision=cs.raw_id, qualified=True),
fixed wrong order of changes in feeds...
r1162 author_name=cs.author,
Removed all string concat for exchange of ''.join()
r1359 description=''.join(desc_msg))
updated docs on every controller
r861
renamed project to rhodecode
r547 response.content_type = feed.mime_type
return feed.writeString('utf-8')
def rss(self, repo_name):
"""Produce an rss2 feed via feedgenerator module"""
added short_id to feeds, and made it more compact
r1897 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
)
fixed wrong order of changes in feeds...
r1162 for cs in reversed(list(c.rhodecode_repo[-self.feed_nr:])):
added short_id to feeds, and made it more compact
r1897 desc_msg = []
Removed all string concat for exchange of ''.join()
r1359 desc_msg.append('%s - %s<br/><pre>' % (cs.author, cs.date))
desc_msg.append(self.__changes(cs))
fixed wrong order of changes in feeds...
r1162
added short_id to feeds, and made it more compact
r1897 feed.add_item(title=self._get_title(cs),
renamed project to rhodecode
r547 link=url('changeset_home', repo_name=repo_name,
Fixes for raw_id, needed for git...
r636 revision=cs.raw_id, qualified=True),
fixed wrong order of changes in feeds...
r1162 author_name=cs.author,
Removed all string concat for exchange of ''.join()
r1359 description=''.join(desc_msg),
fixed wrong order of changes in feeds...
r1162 )
updated docs on every controller
r861
renamed project to rhodecode
r547 response.content_type = feed.mime_type
return feed.writeString('utf-8')