##// END OF EJS Templates
controllers: avoid setting constants as controller instance variables in __before__...
Mads Kiilerich -
r6411:3fcb60a1 default
parent child Browse files
Show More
@@ -34,6 +34,7 b' from pylons.i18n.translation import _'
34 from beaker.cache import cache_region, region_invalidate
34 from beaker.cache import cache_region, region_invalidate
35 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
35 from webhelpers.feedgenerator import Atom1Feed, Rss201rev2Feed
36
36
37 from kallithea import CONFIG
37 from kallithea.lib import helpers as h
38 from kallithea.lib import helpers as h
38 from kallithea.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
39 from kallithea.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
39 from kallithea.lib.base import BaseRepoController
40 from kallithea.lib.base import BaseRepoController
@@ -44,6 +45,10 b' from kallithea.lib.utils2 import safe_in'
44 log = logging.getLogger(__name__)
45 log = logging.getLogger(__name__)
45
46
46
47
48 language = 'en-us'
49 ttl = "5"
50
51
47 class FeedController(BaseRepoController):
52 class FeedController(BaseRepoController):
48
53
49 @LoginRequired(api_access=True)
54 @LoginRequired(api_access=True)
@@ -51,26 +56,15 b' class FeedController(BaseRepoController)'
51 'repository.admin')
56 'repository.admin')
52 def __before__(self):
57 def __before__(self):
53 super(FeedController, self).__before__()
58 super(FeedController, self).__before__()
54 #common values for feeds
55 self.description = _('Changes on %s repository')
56 self.title = self.title = _('%s %s feed') % (c.site_name, '%s')
57 self.language = 'en-us'
58 self.ttl = "5"
59 import kallithea
60 CONF = kallithea.CONFIG
61 self.include_diff = str2bool(CONF.get('rss_include_diff', False))
62 self.feed_nr = safe_int(CONF.get('rss_items_per_page', 20))
63 # we need to protect from parsing huge diffs here other way
64 # we can kill the server
65 self.feed_diff_limit = safe_int(CONF.get('rss_cut_off_limit', 32 * 1024))
66
59
67 def _get_title(self, cs):
60 def _get_title(self, cs):
68 return h.shorter(cs.message, 160)
61 return h.shorter(cs.message, 160)
69
62
70 def __changes(self, cs):
63 def __changes(self, cs):
71 changes = []
64 changes = []
65 rss_cut_off_limit = safe_int(CONFIG.get('rss_cut_off_limit', 32 * 1024))
72 diff_processor = DiffProcessor(cs.diff(),
66 diff_processor = DiffProcessor(cs.diff(),
73 diff_limit=self.feed_diff_limit)
67 diff_limit=rss_cut_off_limit)
74 _parsed = diff_processor.prepare(inline_diff=False)
68 _parsed = diff_processor.prepare(inline_diff=False)
75 limited_diff = False
69 limited_diff = False
76 if isinstance(_parsed, LimitedDiffContainer):
70 if isinstance(_parsed, LimitedDiffContainer):
@@ -108,7 +102,7 b' class FeedController(BaseRepoController)'
108 desc_msg.append(h.urlify_text(cs.message))
102 desc_msg.append(h.urlify_text(cs.message))
109 desc_msg.append('\n')
103 desc_msg.append('\n')
110 desc_msg.extend(changes)
104 desc_msg.extend(changes)
111 if self.include_diff:
105 if str2bool(CONFIG.get('rss_include_diff', False)):
112 desc_msg.append('\n\n')
106 desc_msg.append('\n\n')
113 desc_msg.append(diff_processor.as_raw())
107 desc_msg.append(diff_processor.as_raw())
114 desc_msg.append('</pre>')
108 desc_msg.append('</pre>')
@@ -120,14 +114,15 b' class FeedController(BaseRepoController)'
120 @cache_region('long_term', '_get_feed_from_cache')
114 @cache_region('long_term', '_get_feed_from_cache')
121 def _get_feed_from_cache(key, kind):
115 def _get_feed_from_cache(key, kind):
122 feed = Atom1Feed(
116 feed = Atom1Feed(
123 title=self.title % repo_name,
117 title=_('%s %s feed') % (c.site_name, repo_name),
124 link=h.canonical_url('summary_home', repo_name=repo_name),
118 link=h.canonical_url('summary_home', repo_name=repo_name),
125 description=self.description % repo_name,
119 description=_('Changes on %s repository') % repo_name,
126 language=self.language,
120 language=language,
127 ttl=self.ttl
121 ttl=ttl
128 )
122 )
129
123
130 for cs in reversed(list(c.db_repo_scm_instance[-self.feed_nr:])):
124 rss_items_per_page = safe_int(CONFIG.get('rss_items_per_page', 20))
125 for cs in reversed(list(c.db_repo_scm_instance[-rss_items_per_page:])):
131 feed.add_item(title=self._get_title(cs),
126 feed.add_item(title=self._get_title(cs),
132 link=h.canonical_url('changeset_home', repo_name=repo_name,
127 link=h.canonical_url('changeset_home', repo_name=repo_name,
133 revision=cs.raw_id),
128 revision=cs.raw_id),
@@ -151,14 +146,15 b' class FeedController(BaseRepoController)'
151 @cache_region('long_term', '_get_feed_from_cache')
146 @cache_region('long_term', '_get_feed_from_cache')
152 def _get_feed_from_cache(key, kind):
147 def _get_feed_from_cache(key, kind):
153 feed = Rss201rev2Feed(
148 feed = Rss201rev2Feed(
154 title=self.title % repo_name,
149 title=_('%s %s feed') % (c.site_name, repo_name),
155 link=h.canonical_url('summary_home', repo_name=repo_name),
150 link=h.canonical_url('summary_home', repo_name=repo_name),
156 description=self.description % repo_name,
151 description=_('Changes on %s repository') % repo_name,
157 language=self.language,
152 language=language,
158 ttl=self.ttl
153 ttl=ttl
159 )
154 )
160
155
161 for cs in reversed(list(c.db_repo_scm_instance[-self.feed_nr:])):
156 rss_items_per_page = safe_int(CONFIG.get('rss_items_per_page', 20))
157 for cs in reversed(list(c.db_repo_scm_instance[-rss_items_per_page:])):
162 feed.add_item(title=self._get_title(cs),
158 feed.add_item(title=self._get_title(cs),
163 link=h.canonical_url('changeset_home', repo_name=repo_name,
159 link=h.canonical_url('changeset_home', repo_name=repo_name,
164 revision=cs.raw_id),
160 revision=cs.raw_id),
@@ -55,13 +55,15 b' from kallithea.lib.utils2 import safe_in'
55 log = logging.getLogger(__name__)
55 log = logging.getLogger(__name__)
56
56
57
57
58 language = 'en-us'
59 ttl = "5"
60 feed_nr = 20
61
62
58 class JournalController(BaseController):
63 class JournalController(BaseController):
59
64
60 def __before__(self):
65 def __before__(self):
61 super(JournalController, self).__before__()
66 super(JournalController, self).__before__()
62 self.language = 'en-us'
63 self.ttl = "5"
64 self.feed_nr = 20
65 c.search_term = request.GET.get('filter')
67 c.search_term = request.GET.get('filter')
66
68
67 def _get_daily_aggregate(self, journal):
69 def _get_daily_aggregate(self, journal):
@@ -118,10 +120,10 b' class JournalController(BaseController):'
118 feed = Atom1Feed(title=_desc,
120 feed = Atom1Feed(title=_desc,
119 link=_link,
121 link=_link,
120 description=_desc,
122 description=_desc,
121 language=self.language,
123 language=language,
122 ttl=self.ttl)
124 ttl=ttl)
123
125
124 for entry in journal[:self.feed_nr]:
126 for entry in journal[:feed_nr]:
125 user = entry.user
127 user = entry.user
126 if user is None:
128 if user is None:
127 #fix deleted users
129 #fix deleted users
@@ -160,10 +162,10 b' class JournalController(BaseController):'
160 feed = Rss201rev2Feed(title=_desc,
162 feed = Rss201rev2Feed(title=_desc,
161 link=_link,
163 link=_link,
162 description=_desc,
164 description=_desc,
163 language=self.language,
165 language=language,
164 ttl=self.ttl)
166 ttl=ttl)
165
167
166 for entry in journal[:self.feed_nr]:
168 for entry in journal[:feed_nr]:
167 user = entry.user
169 user = entry.user
168 if user is None:
170 if user is None:
169 #fix deleted users
171 #fix deleted users
General Comments 0
You need to be logged in to leave comments. Login now