Mercurial > piecrust2
view piecrust/sources/generator.py @ 857:d231a10d18f9
refactor: Make the data providers and blog archives source functional.
Also, because of a behaviour change in Jinja, the blog archives sources is
now offering monthly archives by itself.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 08 Jun 2017 08:49:33 -0700 |
parents | 9bb22bbe093c |
children | d1095774bfcf |
line wrap: on
line source
import io import time from werkzeug.utils import cached_property from piecrust.configuration import ConfigurationError from piecrust.sources.base import ContentSource, GeneratedContentException class GeneratorSourceBase(ContentSource): def __init__(self, app, name, config): super().__init__(app, name, config) source_name = config.get('source') if source_name is None: raise ConfigurationError( "Taxonomy source '%s' requires an inner source." % name) self._inner_source_name = source_name self._raw_item = '' @cached_property def inner_source(self): return self.app.getSource(self._inner_source_name) def getContents(self, group): # Our content is procedurally generated from other content sources, # so we really don't support listing anything here -- it would be # typically quite costly. raise GeneratedContentException() def openItem(self, item, mode='r', **kwargs): return io.StringIO(self._raw_item) def getItemMtime(self, item): return time.time()