view piecrust/sources/generator.py @ 979:45ad976712ec

tests: Big push to get the tests to pass again. - Lots of fixes everywhere in the code. - Try to handle debug logging in the multiprocessing worker pool when running in pytest. Not perfect, but usable for now. - Replace all `.md` test files with `.html` since now a auto-format extension always sets the format. - Replace `out` with `outfiles` in most places since now blog archives are added to the bake output and I don't want to add expected outputs for blog archives everywhere.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 29 Oct 2017 22:51:57 -0700
parents d1095774bfcf
children
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 = ''
        self._raw_item_time = time.time()

    @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 self._raw_item_time