Mercurial > piecrust2
diff 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 |
line wrap: on
line diff
--- a/piecrust/records.py Tue Nov 18 21:29:12 2014 -0800 +++ b/piecrust/records.py Tue Nov 18 21:32:04 2014 -0800 @@ -79,22 +79,38 @@ self.previous = self._record_class() return - for e in self.previous.entries: - key = self.getTransitionKey(e) - self.transitions[key] = (e, None) + self._rebuildTransitions() + + def setPrevious(self, previous_record): + self.previous = previous_record + self._rebuildTransitions() def clearPrevious(self): - self.previous = self._record_class() + self.setPrevious(self._record_class()) def saveCurrent(self, current_path): self.current.save(current_path) + def detach(self): + res = self.current + self.current.entry_added -= self._onCurrentEntryAdded + self.current = None + self.previous = None + self.transitions = {} + return res + def addEntry(self, entry): self.current.addEntry(entry) def getTransitionKey(self, entry): raise NotImplementedError() + def _rebuildTransitions(self): + self.transitions = {} + for e in self.previous.entries: + key = self.getTransitionKey(e) + self.transitions[key] = (e, None) + def _onCurrentEntryAdded(self, entry): key = self.getTransitionKey(entry) te = self.transitions.get(key)