Mercurial > piecrust2
diff piecrust/taxonomies.py @ 3:f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
- Serving works, with debug window.
- Baking works, multi-threading, with dependency handling.
- Various things not implemented yet.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 10 Aug 2014 23:43:16 -0700 |
parents | |
children | f130365568ff |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/piecrust/taxonomies.py Sun Aug 10 23:43:16 2014 -0700 @@ -0,0 +1,30 @@ +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 +