diff piecrust/baking/records.py @ 711:ab5c6a8ae90a

bake: Replace hard-coded taxonomy support with "generator" system. * Taxonomies are now implemented one or more `TaxonomyGenerator`s. * A `BlogArchivesGenerator` stub is there but non-functional.
author Ludovic Chabant <ludovic@chabant.com>
date Thu, 26 May 2016 19:52:47 -0700
parents 33ab9badfd7a
children 234d0c7c02cf
line wrap: on
line diff
--- a/piecrust/baking/records.py	Thu May 26 19:46:28 2016 -0700
+++ b/piecrust/baking/records.py	Thu May 26 19:52:47 2016 -0700
@@ -8,15 +8,10 @@
 logger = logging.getLogger(__name__)
 
 
-def _get_transition_key(path, taxonomy_info=None):
+def _get_transition_key(path, extra_key=None):
     key = path
-    if taxonomy_info:
-        key += '+%s:%s=' % (taxonomy_info.source_name,
-                            taxonomy_info.taxonomy_name)
-        if isinstance(taxonomy_info.term, tuple):
-            key += '/'.join(taxonomy_info.term)
-        else:
-            key += taxonomy_info.term
+    if extra_key:
+        key += '+%s' % extra_key
     return hashlib.md5(key.encode('utf8')).hexdigest()
 
 
@@ -69,28 +64,18 @@
         return copy.deepcopy(self.render_info)
 
 
-class TaxonomyInfo(object):
-    def __init__(self, taxonomy_name, source_name, term):
-        self.taxonomy_name = taxonomy_name
-        self.source_name = source_name
-        self.term = term
-
-
 class BakeRecordEntry(object):
     """ An entry in the bake record.
-
-        The `taxonomy_info` attribute should be a tuple of the form:
-        (taxonomy name, term, source name)
     """
     FLAG_NONE = 0
     FLAG_NEW = 2**0
     FLAG_SOURCE_MODIFIED = 2**1
     FLAG_OVERRIDEN = 2**2
 
-    def __init__(self, source_name, path, taxonomy_info=None):
+    def __init__(self, source_name, path, extra_key=None):
         self.source_name = source_name
         self.path = path
-        self.taxonomy_info = taxonomy_info
+        self.extra_key = extra_key
         self.flags = self.FLAG_NONE
         self.config = None
         self.errors = []
@@ -145,14 +130,6 @@
                     res |= pinfo.used_source_names
         return res
 
-    def getAllUsedTaxonomyTerms(self):
-        res = set()
-        for o in self.subs:
-            for pinfo in o.render_info:
-                if pinfo:
-                    res |= pinfo.used_taxonomy_terms
-        return res
-
 
 class TransitionalBakeRecord(TransitionalRecord):
     def __init__(self, previous_path=None):
@@ -168,10 +145,10 @@
         super(TransitionalBakeRecord, self).addEntry(entry)
 
     def getTransitionKey(self, entry):
-        return _get_transition_key(entry.path, entry.taxonomy_info)
+        return _get_transition_key(entry.path, entry.extra_key)
 
-    def getPreviousAndCurrentEntries(self, path, taxonomy_info=None):
-        key = _get_transition_key(path, taxonomy_info)
+    def getPreviousAndCurrentEntries(self, path, extra_key=None):
+        key = _get_transition_key(path, extra_key)
         pair = self.transitions.get(key)
         return pair
 
@@ -184,14 +161,14 @@
                         return cur
         return None
 
-    def getPreviousEntry(self, path, taxonomy_info=None):
-        pair = self.getPreviousAndCurrentEntries(path, taxonomy_info)
+    def getPreviousEntry(self, path, extra_key=None):
+        pair = self.getPreviousAndCurrentEntries(path, extra_key)
         if pair is not None:
             return pair[0]
         return None
 
-    def getCurrentEntry(self, path, taxonomy_info=None):
-        pair = self.getPreviousAndCurrentEntries(path, taxonomy_info)
+    def getCurrentEntry(self, path, extra_key=None):
+        pair = self.getPreviousAndCurrentEntries(path, extra_key)
         if pair is not None:
             return pair[1]
         return None