view piecrust/taxonomies.py @ 164:4534ccbdd2a3

find: Fix the `find` command, add more options. The `--endpoint` option doesn't make any sense anymore since page sources could have non-file-system endpoints. This was replaced with `--name` to match source names instead. Also added `--include-theme`, with filtering out theme pages by default, and `--exact` to explicitely match the given pattern, with matching anything that contains the pattern by default.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 01 Jan 2015 21:34:06 -0800
parents f485ba500df3
children f130365568ff
line wrap: on
line source

from piecrust.sources.base import PageRef, PageNotFoundError


class Taxonomy(object):
    def __init__(self, app, name, config):
        self.app = app
        self.name = name
        self.term_name = config['term']
        self.is_multiple = config['multiple']
        self.page_ref = config['page']
        self._source_page_refs = {}

    def resolvePagePath(self, source_name):
        pr = self.getPageRef(source_name)
        try:
            return pr.path
        except PageNotFoundError:
            return None

    def getPageRef(self, source_name):
        if source_name in self._source_page_refs:
            return self._source_page_refs[source_name]

        source = self.app.getSource(source_name)
        ref_path = (source.getTaxonomyPageRef(self.name) or
                '%s:%s' % (source_name, self.page_ref))
        page_ref = PageRef(self.app, ref_path)
        self._source_page_refs[source_name] = page_ref
        return page_ref