comparison piecrust/sources/blogarchives.py @ 876:d1095774bfcf

refactor: Fix some issues with record/cache entry collisions, add counters.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 15 Jun 2017 07:33:40 -0700
parents 504ddb370df8
children d6d35b2efd04
comparison
equal deleted inserted replaced
875:7169bf42ec60 876:d1095774bfcf
38 def getSupportedRouteParameters(self): 38 def getSupportedRouteParameters(self):
39 return [RouteParameter('year', RouteParameter.TYPE_INT4)] 39 return [RouteParameter('year', RouteParameter.TYPE_INT4)]
40 40
41 def findContent(self, route_params): 41 def findContent(self, route_params):
42 year = route_params['year'] 42 year = route_params['year']
43 spec = '_index[%04d]' % year 43 spec = '_index'
44 metadata = {'route_params': {'year': year}} 44 metadata = {
45 'record_entry_spec': '_index[%04d]' % year,
46 'route_params': {'year': year}
47 }
45 return ContentItem(spec, metadata) 48 return ContentItem(spec, metadata)
46 49
47 def prepareRenderContext(self, ctx): 50 def prepareRenderContext(self, ctx):
48 ctx.pagination_source = self.inner_source 51 ctx.pagination_source = self.inner_source
49 52
165 168
166 def shutdown(self): 169 def shutdown(self):
167 self._pagebaker.stopWriterQueue() 170 self._pagebaker.stopWriterQueue()
168 171
169 def createJobs(self, ctx): 172 def createJobs(self, ctx):
173 logger.debug("Caching template page for blog archives '%s'." %
174 self.inner_source.name)
175 page = self.app.getPage(self.source, ContentItem('_index', {}))
176 page._load()
177
170 logger.debug("Building blog archives for: %s" % 178 logger.debug("Building blog archives for: %s" %
171 self.inner_source.name) 179 self.inner_source.name)
172 self._buildDirtyYears(ctx) 180 self._buildDirtyYears(ctx)
173 logger.debug("Got %d dirty years out of %d." % 181 logger.debug("Got %d dirty years out of %d." %
174 (len(self._dirty_years), len(self._all_years))) 182 (len(self._dirty_years), len(self._all_years)))
175 183
176 jobs = [] 184 jobs = []
177 for y in self._dirty_years: 185 for y in self._dirty_years:
178 item = ContentItem( 186 item = ContentItem(
179 '_index[%04d]' % y, 187 '_index',
180 {'route_params': {'year': y}}) 188 {
189 'record_entry_spec': '_index[%04d]' % y,
190 'route_params': {'year': y}
191 })
181 jobs.append(self.createJob(item)) 192 jobs.append(self.createJob(item))
182 if len(jobs) > 0: 193 if len(jobs) > 0:
183 return jobs 194 return jobs
184 return None 195 return None
185 196