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