Mercurial > public > src > rhodecode
comparison pylons_app/controllers/feed.py @ 207:8bdec09436cb v0.7.1
bumped version to 0.7.1 added atom and rss feeds. Moved https Fixud middleware before error middleware to proper generate debug page (static imports)
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 23 May 2010 02:07:56 +0200 |
parents | 66b20f525750 |
children | a83a1799480c |
comparison
equal
deleted
inserted
replaced
206:7a6a69f3b9ec | 207:8bdec09436cb |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | 2 # -*- coding: utf-8 -*- |
3 import logging | 3 import logging |
4 from operator import itemgetter | 4 from operator import itemgetter |
5 from pylons import tmpl_context as c, request, config | 5 from pylons import tmpl_context as c, request, config, url, response |
6 from pylons_app.lib.base import BaseController, render | 6 from pylons_app.lib.base import BaseController, render, _full_changelog_cached |
7 from pylons_app.lib.utils import get_repo_slug | 7 from pylons_app.lib.utils import get_repo_slug |
8 from pylons_app.model.hg_model import HgModel | 8 from pylons_app.model.hg_model import HgModel |
9 from pylons_app.lib.auth import LoginRequired | 9 from pylons_app.lib.auth import LoginRequired |
10 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed | |
10 log = logging.getLogger(__name__) | 11 log = logging.getLogger(__name__) |
11 | 12 |
12 class FeedController(BaseController): | 13 class FeedController(BaseController): |
13 | 14 |
14 #secure it or not ? | 15 #secure it or not ? |
15 def __before__(self): | 16 def __before__(self): |
16 super(FeedController, self).__before__() | 17 super(FeedController, self).__before__() |
18 #common values for feeds | |
19 self.description = 'Changes on %s repository' | |
20 self.title = "%s feed" | |
21 self.language = 'en-us' | |
22 self.ttl = "5" | |
23 self.feed_nr = 10 | |
24 | |
25 def atom(self, repo_name): | |
26 """Produce an atom-1.0 feed via feedgenerator module""" | |
27 feed = Atom1Feed(title=self.title % repo_name, | |
28 link=url('summary_home', repo_name=repo_name, qualified=True), | |
29 description=self.description % repo_name, | |
30 language=self.language, | |
31 ttl=self.ttl) | |
17 | 32 |
18 def atom(self): | 33 |
19 return 'Hello Atom' | 34 for cnt, cs in enumerate(_full_changelog_cached(repo_name)): |
35 if cnt > self.feed_nr: | |
36 break | |
37 feed.add_item(title=cs.message, | |
38 link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), | |
39 description=str(cs.date)) | |
40 | |
41 response.content_type = feed.mime_type | |
42 return feed.writeString('utf-8') | |
43 | |
20 | 44 |
21 def rss(self): | 45 def rss(self, repo_name): |
22 return 'Hello rss' | 46 """Produce an rss2 feed via feedgenerator module""" |
47 feed = Rss201rev2Feed(title=self.title % repo_name, | |
48 link=url('summary_home', repo_name=repo_name, qualified=True), | |
49 description=self.description % repo_name, | |
50 language=self.language, | |
51 ttl=self.ttl) | |
52 | |
53 for cnt, cs in enumerate(_full_changelog_cached(repo_name)): | |
54 if cnt > self.feed_nr: | |
55 break | |
56 feed.add_item(title=cs.message, | |
57 link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), | |
58 description=str(cs.date)) | |
59 | |
60 response.content_type = feed.mime_type | |
61 return feed.writeString('utf-8') |