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')