Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
580:c7ac7dc2fe73 | 581:911a054f4fbd |
---|---|
1 import logging | 1 import logging |
2 from piecrust.data.filters import PaginationFilter | 2 from piecrust.data.filters import PaginationFilter, IsFilterClause, NotClause |
3 from piecrust.environment import AbortedSourceUseError | 3 from piecrust.environment import AbortedSourceUseError |
4 from piecrust.events import Event | 4 from piecrust.events import Event |
5 from piecrust.sources.base import PageSource | 5 from piecrust.sources.base import PageSource |
6 from piecrust.sources.interfaces import IPaginationSource | 6 from piecrust.sources.interfaces import IPaginationSource |
7 | 7 |
130 if isinstance(source, IPaginationSource): | 130 if isinstance(source, IPaginationSource): |
131 src_it = source.getSourceIterator() | 131 src_it = source.getSourceIterator() |
132 if src_it is not None: | 132 if src_it is not None: |
133 self._pages = src_it | 133 self._pages = src_it |
134 | 134 |
135 # If we're currently baking, apply the default baker filter | |
136 # to exclude things like draft posts. | |
137 if (isinstance(source, PageSource) and | |
138 source.app.config.get('baker/is_baking')): | |
139 setting_name = source.app.config.get('baker/no_bake_setting', | |
140 'draft') | |
141 accessor = self._getSettingAccessor() | |
142 draft_filter = PaginationFilter(accessor) | |
143 draft_filter.root_clause = NotClause() | |
144 draft_filter.root_clause.addClause( | |
145 IsFilterClause(setting_name, True)) | |
146 self._simpleNonSortedWrap( | |
147 PaginationFilterIterator, draft_filter) | |
148 | |
135 # Apply any filter first, before we start sorting or slicing. | 149 # Apply any filter first, before we start sorting or slicing. |
136 if pagination_filter is not None: | 150 if pagination_filter is not None: |
137 self._simpleNonSortedWrap(PaginationFilterIterator, | 151 self._simpleNonSortedWrap(PaginationFilterIterator, |
138 pagination_filter) | 152 pagination_filter) |
139 | 153 |