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