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
+