feed.py
61 lines
| 2.4 KiB
| text/x-python
|
PythonLexer
r205 | #!/usr/bin/python | |||
# -*- coding: utf-8 -*- | ||||
import logging | ||||
from operator import itemgetter | ||||
r207 | from pylons import tmpl_context as c, request, config, url, response | |||
from pylons_app.lib.base import BaseController, render, _full_changelog_cached | ||||
r205 | from pylons_app.lib.utils import get_repo_slug | |||
from pylons_app.model.hg_model import HgModel | ||||
from pylons_app.lib.auth import LoginRequired | ||||
r207 | from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed | |||
r205 | log = logging.getLogger(__name__) | |||
class FeedController(BaseController): | ||||
#secure it or not ? | ||||
def __before__(self): | ||||
super(FeedController, self).__before__() | ||||
r207 | #common values for feeds | |||
self.description = 'Changes on %s repository' | ||||
self.title = "%s feed" | ||||
self.language = 'en-us' | ||||
self.ttl = "5" | ||||
self.feed_nr = 10 | ||||
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), | ||||
description=self.description % repo_name, | ||||
language=self.language, | ||||
ttl=self.ttl) | ||||
r205 | ||||
r207 | ||||
for cnt, cs in enumerate(_full_changelog_cached(repo_name)): | ||||
if cnt > self.feed_nr: | ||||
break | ||||
feed.add_item(title=cs.message, | ||||
link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), | ||||
description=str(cs.date)) | ||||
response.content_type = feed.mime_type | ||||
return feed.writeString('utf-8') | ||||
r205 | ||||
r207 | 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), | ||||
description=self.description % repo_name, | ||||
language=self.language, | ||||
ttl=self.ttl) | ||||
for cnt, cs in enumerate(_full_changelog_cached(repo_name)): | ||||
if cnt > self.feed_nr: | ||||
break | ||||
feed.add_item(title=cs.message, | ||||
link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), | ||||
description=str(cs.date)) | ||||
response.content_type = feed.mime_type | ||||
return feed.writeString('utf-8') | ||||