Mercurial > piecrust2
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