comparison piecrust/baking/records.py @ 50:2fec3ee1298f

Properly override pages between realms.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 22 Aug 2014 23:41:17 -0700
parents 923699e816d0
children 3471ffa059b2
comparison
equal deleted inserted replaced
49:fce061f8c2ed 50:2fec3ee1298f
26 self.out_dir = None 26 self.out_dir = None
27 self.bake_time = None 27 self.bake_time = None
28 28
29 29
30 class BakeRecordPageEntry(object): 30 class BakeRecordPageEntry(object):
31 def __init__(self, page): 31 def __init__(self, page=None):
32 self.path = page.path 32 self.path = None
33 self.rel_path = page.rel_path 33 self.rel_path = None
34 self.source_name = page.source.name 34 self.source_name = None
35 self.config = page.config.get() 35 self.config = None
36 self.taxonomy_name = None 36 self.taxonomy_name = None
37 self.taxonomy_term = None 37 self.taxonomy_term = None
38 self.was_overriden = False
38 self.out_uris = [] 39 self.out_uris = []
39 self.out_paths = [] 40 self.out_paths = []
40 self.used_source_names = set() 41 self.used_source_names = set()
41 self.used_taxonomy_terms = set() 42 self.used_taxonomy_terms = set()
43
44 if page:
45 self.path = page.path
46 self.rel_path = page.rel_path
47 self.source_name = page.source.name
48 self.config = page.config.get()
42 49
43 @property 50 @property
44 def was_baked(self): 51 def was_baked(self):
45 return len(self.out_paths) > 0 52 return len(self.out_paths) > 0
46 53
86 self.current.save(current_path) 93 self.current.save(current_path)
87 94
88 def addEntry(self, entry): 95 def addEntry(self, entry):
89 self.current.addEntry(entry) 96 self.current.addEntry(entry)
90 97
98 def getOverrideEntry(self, factory, uri):
99 for pair in self.transitions.values():
100 prev = pair[0]
101 cur = pair[1]
102 if (cur and
103 (cur.source_name != factory.source.name or
104 cur.rel_path != factory.rel_path) and
105 len(cur.out_uris) > 0 and cur.out_uris[0] == uri):
106 return cur
107 if (prev and
108 (prev.source_name != factory.source.name or
109 prev.rel_path != factory.rel_path) and
110 len(prev.out_uris) > 0 and prev.out_uris[0] == uri):
111 return prev
112 return None
113
91 def getPreviousEntry(self, page, taxonomy_name=None, taxonomy_term=None): 114 def getPreviousEntry(self, page, taxonomy_name=None, taxonomy_term=None):
92 key = _get_transition_key(page.source.name, page.rel_path, 115 key = _get_transition_key(page.source.name, page.rel_path,
93 taxonomy_name, taxonomy_term) 116 taxonomy_name, taxonomy_term)
94 pair = self.transitions.get(key) 117 pair = self.transitions.get(key)
95 if pair is not None: 118 if pair is not None:
103 126
104 if prev and cur and not cur.was_baked: 127 if prev and cur and not cur.was_baked:
105 # This page wasn't baked, so the information from last 128 # This page wasn't baked, so the information from last
106 # time is still valid (we didn't get any information 129 # time is still valid (we didn't get any information
107 # since we didn't bake). 130 # since we didn't bake).
131 cur.was_overriden = prev.was_overriden
108 cur.out_uris = list(prev.out_uris) 132 cur.out_uris = list(prev.out_uris)
109 cur.out_paths = list(prev.out_paths) 133 cur.out_paths = list(prev.out_paths)
110 cur.used_source_names = set(prev.used_source_names) 134 cur.used_source_names = set(prev.used_source_names)
111 cur.used_taxonomy_terms = set(prev.used_taxonomy_terms) 135 cur.used_taxonomy_terms = set(prev.used_taxonomy_terms)
112 136