Mercurial > piecrust2
view piecrust/sources/prose.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 | f130365568ff |
children | 4b1019bb2533 |
line wrap: on
line source
import os import os.path import logging from piecrust.sources.base import MODE_CREATING from piecrust.sources.default import DefaultPageSource logger = logging.getLogger(__name__) class ProseSource(DefaultPageSource): SOURCE_NAME = 'prose' def __init__(self, app, name, config): super(ProseSource, self).__init__(app, name, config) self.config_recipe = config.get('config', {}) def _populateMetadata(self, rel_path, metadata, mode=None): metadata['config'] = self._makeConfig(rel_path, mode) def _makeConfig(self, rel_path, mode): c = dict(self.config_recipe) if c.get('title') == '%first_line%' and mode != MODE_CREATING: path = os.path.join(self.fs_endpoint_path, rel_path) c['title'] = get_first_line(path) return c def get_first_line(path): with open(path, 'r') as f: while True: l = f.readline() if not l: break l = l.strip() if not l: continue return l return None