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