Mercurial > piecrust2
comparison piecrust/sources/blogarchives.py @ 1144:9f3e702a8a69
bake: Give unique source specs to each taxonomy or blog archive page.
This prevents caching issues in some situations, leading to one tag page reusing the data from a previous tag page.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 05 Jun 2018 22:05:46 -0700 |
parents | 5f97b5b59dfe |
children |
comparison
equal
deleted
inserted
replaced
1143:1c324407bd1f | 1144:9f3e702a8a69 |
---|---|
40 return [RouteParameter('year', RouteParameter.TYPE_INT4)] | 40 return [RouteParameter('year', RouteParameter.TYPE_INT4)] |
41 | 41 |
42 def findContentFromRoute(self, route_params): | 42 def findContentFromRoute(self, route_params): |
43 year = route_params['year'] | 43 year = route_params['year'] |
44 return ContentItem( | 44 return ContentItem( |
45 '_index', | 45 '_index[%s]' % year, |
46 {'route_params': {'year': year}}) | 46 {'route_params': {'year': year}}) |
47 | 47 |
48 def prepareRenderContext(self, ctx): | 48 def prepareRenderContext(self, ctx): |
49 ctx.pagination_source = self.inner_source | 49 ctx.pagination_source = self.inner_source |
50 | 50 |
163 | 163 |
164 def shutdown(self): | 164 def shutdown(self): |
165 self._pagebaker.stopWriterQueue() | 165 self._pagebaker.stopWriterQueue() |
166 | 166 |
167 def createJobs(self, ctx): | 167 def createJobs(self, ctx): |
168 logger.debug("Caching template page for blog archives '%s'." % | |
169 self.inner_source.name) | |
170 page = self.app.getPage(self.source, ContentItem('_index', {})) | |
171 page._load() | |
172 | |
173 logger.debug("Building blog archives for: %s" % | 168 logger.debug("Building blog archives for: %s" % |
174 self.inner_source.name) | 169 self.inner_source.name) |
175 self._buildDirtyYears(ctx) | 170 self._buildDirtyYears(ctx) |
176 logger.debug("Got %d dirty years out of %d." % | 171 logger.debug("Got %d dirty years out of %d." % |
177 (len(self._dirty_years), len(self._all_years))) | 172 (len(self._dirty_years), len(self._all_years))) |
179 jobs = [] | 174 jobs = [] |
180 rec_fac = self.createRecordEntry | 175 rec_fac = self.createRecordEntry |
181 current_record = ctx.current_record | 176 current_record = ctx.current_record |
182 | 177 |
183 for y in self._dirty_years: | 178 for y in self._dirty_years: |
184 record_entry_spec = '_index[%04d]' % y | 179 item_spec = '_index[%04d]' % y |
185 | 180 |
186 jobs.append(create_job(self, '_index', | 181 jobs.append(create_job(self, item_spec, |
187 year=y, | 182 year=y)) |
188 record_entry_spec=record_entry_spec)) | 183 |
189 | 184 entry = rec_fac(item_spec) |
190 entry = rec_fac(record_entry_spec) | |
191 current_record.addEntry(entry) | 185 current_record.addEntry(entry) |
192 | 186 |
193 if len(jobs) > 0: | 187 if len(jobs) > 0: |
194 return jobs, "archive" | 188 return jobs, "archive" |
195 return None, None | 189 return None, None |
196 | 190 |
197 def run(self, job, ctx, result): | 191 def run(self, job, ctx, result): |
198 year = job['year'] | 192 year = job['year'] |
199 content_item = ContentItem('_index', | 193 content_item = ContentItem('_index[%04d]' % year, |
200 {'year': year, | 194 {'year': year, |
201 'route_params': {'year': year}}) | 195 'route_params': {'year': year}}) |
202 page = Page(self.source, content_item) | 196 page = Page(self.source, content_item) |
203 | 197 |
204 prev_entry = ctx.previous_entry | 198 prev_entry = ctx.previous_entry |