Mercurial > kallithea
comparison pylons_app/controllers/feed.py @ 507:f420e86db893
drastic speed improvment in feed generation (was using old method)
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 27 Sep 2010 03:13:05 +0200 |
parents | 3782a6d698af |
children | d945c95ba4ac |
comparison
equal
deleted
inserted
replaced
506:d5efb83590ef | 507:f420e86db893 |
---|---|
22 feed controller for pylons | 22 feed controller for pylons |
23 @author: marcink | 23 @author: marcink |
24 """ | 24 """ |
25 from pylons import tmpl_context as c, url, response | 25 from pylons import tmpl_context as c, url, response |
26 from pylons_app.lib.base import BaseController, render | 26 from pylons_app.lib.base import BaseController, render |
27 from pylons_app.model.hg_model import _full_changelog_cached | 27 from pylons_app.model.hg_model import HgModel |
28 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed | 28 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed |
29 import logging | 29 import logging |
30 log = logging.getLogger(__name__) | 30 log = logging.getLogger(__name__) |
31 | 31 |
32 class FeedController(BaseController): | 32 class FeedController(BaseController): |
47 link=url('summary_home', repo_name=repo_name, qualified=True), | 47 link=url('summary_home', repo_name=repo_name, qualified=True), |
48 description=self.description % repo_name, | 48 description=self.description % repo_name, |
49 language=self.language, | 49 language=self.language, |
50 ttl=self.ttl) | 50 ttl=self.ttl) |
51 | 51 |
52 | 52 changesets = HgModel().get_repo(repo_name) |
53 for cnt, cs in enumerate(_full_changelog_cached(repo_name)): | 53 |
54 if cnt > self.feed_nr: | 54 for cs in changesets[:self.feed_nr]: |
55 break | |
56 feed.add_item(title=cs.message, | 55 feed.add_item(title=cs.message, |
57 link=url('changeset_home', repo_name=repo_name, | 56 link=url('changeset_home', repo_name=repo_name, |
58 revision=cs.raw_id, qualified=True), | 57 revision=cs.raw_id, qualified=True), |
59 description=str(cs.date)) | 58 description=str(cs.date)) |
60 | 59 |
68 link=url('summary_home', repo_name=repo_name, qualified=True), | 67 link=url('summary_home', repo_name=repo_name, qualified=True), |
69 description=self.description % repo_name, | 68 description=self.description % repo_name, |
70 language=self.language, | 69 language=self.language, |
71 ttl=self.ttl) | 70 ttl=self.ttl) |
72 | 71 |
73 for cnt, cs in enumerate(_full_changelog_cached(repo_name)): | 72 changesets = HgModel().get_repo(repo_name) |
74 if cnt > self.feed_nr: | 73 for cs in changesets[:self.feed_nr]: |
75 break | |
76 feed.add_item(title=cs.message, | 74 feed.add_item(title=cs.message, |
77 link=url('changeset_home', repo_name=repo_name, revision=cs.raw_id, qualified=True), | 75 link=url('changeset_home', repo_name=repo_name, |
76 revision=cs.raw_id, qualified=True), | |
78 description=str(cs.date)) | 77 description=str(cs.date)) |
79 | 78 |
80 response.content_type = feed.mime_type | 79 response.content_type = feed.mime_type |
81 return feed.writeString('utf-8') | 80 return feed.writeString('utf-8') |