Mercurial > piecrust2
view piecrust/taxonomies.py @ 374:fa3ee8a8ee2d
serve: Split the server code in a couple modules inside a `serving` package.
This makes the `serve` command's code a bit more removed from implementation
details, and paves the way for the CMS mode.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Thu, 07 May 2015 21:37:38 -0700 |
parents | 6c5de6edacf7 |
children | e7b865f8f335 |
line wrap: on
line source
from piecrust.sources.pageref import PageRef, PageNotFoundError class Taxonomy(object): def __init__(self, app, name, config): self.app = app self.name = name self.term_name = config.get('term', name) self.is_multiple = config.get('multiple', False) self.page_ref = config.get('page') self._source_page_refs = {} @property def setting_name(self): if self.is_multiple: return self.name return self.term_name 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