comparison piecrust/records.py @ 133:9e4c2e68a129

Optimize server for files that already exist. * Only try to find new assets if no previously existing asset or page could be used. * Tidy up a bit the API for passing and returning bake/process records. * Put the process record in its place.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 18 Nov 2014 21:32:04 -0800
parents 133845647083
children c132a2cba521
comparison
equal deleted inserted replaced
132:3834e2ef0cf2 133:9e4c2e68a129
77 77
78 if not previous_record_valid: 78 if not previous_record_valid:
79 self.previous = self._record_class() 79 self.previous = self._record_class()
80 return 80 return
81 81
82 for e in self.previous.entries: 82 self._rebuildTransitions()
83 key = self.getTransitionKey(e) 83
84 self.transitions[key] = (e, None) 84 def setPrevious(self, previous_record):
85 self.previous = previous_record
86 self._rebuildTransitions()
85 87
86 def clearPrevious(self): 88 def clearPrevious(self):
87 self.previous = self._record_class() 89 self.setPrevious(self._record_class())
88 90
89 def saveCurrent(self, current_path): 91 def saveCurrent(self, current_path):
90 self.current.save(current_path) 92 self.current.save(current_path)
93
94 def detach(self):
95 res = self.current
96 self.current.entry_added -= self._onCurrentEntryAdded
97 self.current = None
98 self.previous = None
99 self.transitions = {}
100 return res
91 101
92 def addEntry(self, entry): 102 def addEntry(self, entry):
93 self.current.addEntry(entry) 103 self.current.addEntry(entry)
94 104
95 def getTransitionKey(self, entry): 105 def getTransitionKey(self, entry):
96 raise NotImplementedError() 106 raise NotImplementedError()
107
108 def _rebuildTransitions(self):
109 self.transitions = {}
110 for e in self.previous.entries:
111 key = self.getTransitionKey(e)
112 self.transitions[key] = (e, None)
97 113
98 def _onCurrentEntryAdded(self, entry): 114 def _onCurrentEntryAdded(self, entry):
99 key = self.getTransitionKey(entry) 115 key = self.getTransitionKey(entry)
100 te = self.transitions.get(key) 116 te = self.transitions.get(key)
101 if te is None: 117 if te is None: