diff 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
line wrap: on
line diff
--- a/piecrust/sources/blogarchives.py	Thu Jun 15 07:32:19 2017 -0700
+++ b/piecrust/sources/blogarchives.py	Thu Jun 15 07:33:40 2017 -0700
@@ -40,8 +40,11 @@
 
     def findContent(self, route_params):
         year = route_params['year']
-        spec = '_index[%04d]' % year
-        metadata = {'route_params': {'year': year}}
+        spec = '_index'
+        metadata = {
+            'record_entry_spec': '_index[%04d]' % year,
+            'route_params': {'year': year}
+        }
         return ContentItem(spec, metadata)
 
     def prepareRenderContext(self, ctx):
@@ -167,6 +170,11 @@
         self._pagebaker.stopWriterQueue()
 
     def createJobs(self, ctx):
+        logger.debug("Caching template page for blog archives '%s'." %
+                     self.inner_source.name)
+        page = self.app.getPage(self.source, ContentItem('_index', {}))
+        page._load()
+
         logger.debug("Building blog archives for: %s" %
                      self.inner_source.name)
         self._buildDirtyYears(ctx)
@@ -176,8 +184,11 @@
         jobs = []
         for y in self._dirty_years:
             item = ContentItem(
-                '_index[%04d]' % y,
-                {'route_params': {'year': y}})
+                '_index',
+                {
+                    'record_entry_spec': '_index[%04d]' % y,
+                    'route_params': {'year': y}
+                })
             jobs.append(self.createJob(item))
         if len(jobs) > 0:
             return jobs