# HG changeset patch # User Ludovic Chabant # Date 1451515784 28800 # Node ID 911a054f4fbd04b6b3a6ab6ef11bacd41ce35e03 # Parent c7ac7dc2fe73d24d46ada0e036d0a9e66e0a9f50 bake: Add support for a "known" page setting that excludes it from the bake. (this is useful to set pages as "drafts") diff -r c7ac7dc2fe73 -r 911a054f4fbd piecrust/data/iterators.py --- a/piecrust/data/iterators.py Wed Dec 30 14:47:23 2015 -0800 +++ b/piecrust/data/iterators.py Wed Dec 30 14:49:44 2015 -0800 @@ -1,5 +1,5 @@ import logging -from piecrust.data.filters import PaginationFilter +from piecrust.data.filters import PaginationFilter, IsFilterClause, NotClause from piecrust.environment import AbortedSourceUseError from piecrust.events import Event from piecrust.sources.base import PageSource @@ -132,6 +132,20 @@ if src_it is not None: self._pages = src_it + # If we're currently baking, apply the default baker filter + # to exclude things like draft posts. + if (isinstance(source, PageSource) and + source.app.config.get('baker/is_baking')): + setting_name = source.app.config.get('baker/no_bake_setting', + 'draft') + accessor = self._getSettingAccessor() + draft_filter = PaginationFilter(accessor) + draft_filter.root_clause = NotClause() + draft_filter.root_clause.addClause( + IsFilterClause(setting_name, True)) + self._simpleNonSortedWrap( + PaginationFilterIterator, draft_filter) + # Apply any filter first, before we start sorting or slicing. if pagination_filter is not None: self._simpleNonSortedWrap(PaginationFilterIterator,