# HG changeset patch # User Ludovic Chabant # Date 1464846371 25200 # Node ID 13ec290bfc13b32f5a0c272070d601c6e77ec072 # Parent 6c500fd3194f08b4a5b7077d4790026cd76a4af4 bake: Fix some crashes with new blog archive/taxonomy for incremental bakes. diff -r 6c500fd3194f -r 13ec290bfc13 piecrust/generation/blogarchives.py --- 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): diff -r 6c500fd3194f -r 13ec290bfc13 piecrust/generation/taxonomy.py --- a/piecrust/generation/taxonomy.py Wed Jun 01 22:24:35 2016 -0700 +++ b/piecrust/generation/taxonomy.py Wed Jun 01 22:46:11 2016 -0700 @@ -141,9 +141,11 @@ start_time = time.perf_counter() page_count = self._bakeTaxonomyTerms(ctx, all_terms, dirty_terms) - logger.info(format_timed( - start_time, - "baked %d %s pages." % (page_count, self.taxonomy.term_name))) + if page_count > 0: + logger.info(format_timed( + start_time, + "baked %d %s pages for %s." % ( + page_count, self.taxonomy.term_name, self.source_name))) def _buildDirtyTaxonomyTerms(self, ctx): # Build the list of terms for our taxonomy, and figure out which ones @@ -154,6 +156,9 @@ # Re-bake all taxonomy terms that include new or changed pages. for prev_entry, cur_entry in ctx.getBakedPageRecords(): + if cur_entry.source_name != self.source_name: + continue + entries = [cur_entry] if prev_entry: entries.append(prev_entry)