Mercurial > piecrust2
diff piecrust/data/iterators.py @ 581:911a054f4fbd
bake: Add support for a "known" page setting that excludes it from the bake.
(this is useful to set pages as "drafts")
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 30 Dec 2015 14:49:44 -0800 |
parents | cb3446be44b7 |
children | e35407c60e00 |
line wrap: on
line diff
--- 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,