diff piecrust/generation/blogarchives.py @ 736:13ec290bfc13

bake: Fix some crashes with new blog archive/taxonomy for incremental bakes.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 01 Jun 2016 22:46:11 -0700
parents e35407c60e00
children 58ebf50235a5
line wrap: on
line diff
--- a/piecrust/generation/blogarchives.py	Wed Jun 01 22:24:35 2016 -0700
+++ b/piecrust/generation/blogarchives.py	Wed Jun 01 22:46:11 2016 -0700
@@ -3,7 +3,7 @@
 from piecrust.chefutil import format_timed_scope
 from piecrust.data.filters import PaginationFilter, IFilterClause
 from piecrust.data.iterators import PageIterator
-from piecrust.generation.base import PageGenerator
+from piecrust.generation.base import PageGenerator, InvalidRecordExtraKey
 
 
 logger = logging.getLogger(__name__)
@@ -63,7 +63,7 @@
         all_years = set()
         dirty_years = set()
         for _, cur_entry in ctx.getAllPageRecords():
-            if cur_entry.source_name == self.source_name:
+            if cur_entry and cur_entry.source_name == self.source_name:
                 dt = datetime.datetime.fromtimestamp(cur_entry.timestamp)
                 all_years.add(dt.year)
                 if cur_entry.was_any_sub_baked:
@@ -90,17 +90,20 @@
         # Create bake entries for the years that were *not* dirty.
         # Otherwise, when checking for deleted pages, we would not find any
         # outputs and would delete those files.
+        all_str_years = [str(y) for y in all_years]
         for prev_entry, cur_entry in ctx.getAllPageRecords():
             if prev_entry and not cur_entry:
                 try:
                     y = ctx.getSeedFromRecordExtraKey(prev_entry.extra_key)
                 except InvalidRecordExtraKey:
                     continue
-                if y in all_years:
-                    logger.debug("Creating unbaked entry for %d archive." % y)
+                if y in all_str_years:
+                    logger.debug(
+                            "Creating unbaked entry for year %s archive." % y)
                     ctx.collapseRecord(prev_entry)
                 else:
-                    logger.debug("No page references year %d anymore." % y)
+                    logger.debug(
+                            "No page references year %s anymore." % y)
 
 
 class IsFromYearFilterClause(IFilterClause):