From 1dceba92888b8701c21511b31177560b9c9036b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Sun, 6 Jan 2013 17:59:46 +0100 Subject: [PATCH] Better use of posts cache --- generators/index.py | 54 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/generators/index.py b/generators/index.py index c073d1c..882748e 100644 --- a/generators/index.py +++ b/generators/index.py @@ -27,6 +27,8 @@ class Index(DynastieGenerator): 'tags' : self.createTags, 'replace' : self.createReplace} + self.first_try = True + def createReplace(self, posts, dom, root, replace_elem): if not replace_elem.hasAttribute('div_name'): self.addError('No attribute div_name for a replace tag') @@ -106,6 +108,11 @@ class Index(DynastieGenerator): def createPost(self, posts, dom, post_elem, root): post = self.cur_post_obj + + if post.id in self.hash_posts and not self.first_try: + node = self.hash_posts[post.id] + return node.cloneNode(0) + values = {} values['author'] = post.author.first_name + ' ' + post.author.last_name values['date'] = post.creation_date.strftime('%A, %d %B %Y %H:%m') @@ -118,15 +125,11 @@ class Index(DynastieGenerator): if not os.path.exists(filename): self.addError('File does not exists ' + filename) - return + return None - if self.hash_posts is None or not filename in self.hash_posts: - f = open(filename, 'rb') - post_content = f.read() - f.close() - self.hash_posts[filename] = post_content - else: - post_content = self.hash_posts[filename] + f = open(filename, 'rb') + post_content = f.read() + f.close() while True: start = post_content.find(' self.cur_post: self.cur_post_obj = posts[self.cur_post] - self.createPost(posts, dom, post_elem, node) + post_elem = self.createPost(posts, dom, post_elem, node) else: post_elem = self.createElement(dom, '', 'No posts yet') self.cur_post_obj = None - posts_elem.appendChild(post_elem) + if not post_elem is None: + posts_elem.appendChild(post_elem) # Parse inner HTML self._parse(self.hooks, posts, dom, post_elem)