diff piecrust/rendering.py @ 334:b034f6f15e22

bake: Several bug taxonomy-related fixes for incorrect incremental bakes. * Improve how the baker processes taxonomy terms and figures out what needs to be re-baked or not. * Create bake entries for clean taxnomy terms so they're not deleted by an incremental bake. * Add more information to bake records. * Slugify taxonomy terms is now done by the route in one place. * Fix a bug where the cache key for invalidating rendered segments was not computed the same way as when the caching was done. * Fix how term combinations are passed around, rendered, printed, parsed, etc. (TODO: more word needed in the routing functions) * Expose to the template whether a taxonomy term is a combination or not. * Display term combinations better in the built-in theme. * Rename `route.taxonomy` to `route.taxonomy_name` to prevent confusion. * Add options to show bake records for previous bakes.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 03 Apr 2015 10:59:50 -0700
parents 422052d2e978
children 938be93215cb
line wrap: on
line diff
--- a/piecrust/rendering.py	Fri Apr 03 08:44:21 2015 -0700
+++ b/piecrust/rendering.py	Fri Apr 03 10:59:50 2015 -0700
@@ -68,9 +68,6 @@
     def source_metadata(self):
         return self.page.source_metadata
 
-    def reset(self):
-        self.used_pagination = None
-
     def setPagination(self, paginator):
         if self.used_pagination is not None:
             raise Exception("Pagination has already been used.")
@@ -82,9 +79,10 @@
             self.used_source_names.add((source.name, self.current_pass))
 
     def setTaxonomyFilter(self, taxonomy, term_value):
+        is_combination = isinstance(term_value, tuple)
         flt = PaginationFilter(value_accessor=page_value_accessor)
         if taxonomy.is_multiple:
-            if isinstance(term_value, tuple):
+            if is_combination:
                 abc = AndBooleanClause()
                 for t in term_value:
                     abc.addClause(HasFilterClause(taxonomy.setting_name, t))
@@ -95,8 +93,10 @@
         else:
             flt.addClause(IsFilterClause(taxonomy.setting_name, term_value))
         self.pagination_filter = flt
+
         self.custom_data = {
-                taxonomy.term_name: term_value}
+                taxonomy.term_name: term_value,
+                'is_multiple_%s' % taxonomy.term_name: is_combination}
 
 
 def render_page(ctx):
@@ -117,7 +117,7 @@
         ctx.current_pass = PASS_FORMATTING
         repo = ctx.app.env.rendered_segments_repository
         if repo and not ctx.force_render:
-            cache_key = '%s:%s' % (ctx.uri, ctx.page_num)
+            cache_key = ctx.uri
             page_time = page.path_mtime
             contents = repo.get(
                     cache_key,