From 99adf52046bacfcc861c2f110a0108dc6764c4f9 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Mon, 23 Nov 2015 16:21:11 +0100 Subject: [PATCH] Cache the computed average rating --- src/calibre/gui2/tag_browser/model.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/tag_browser/model.py b/src/calibre/gui2/tag_browser/model.py index 1f4a662eef..e95b516151 100644 --- a/src/calibre/gui2/tag_browser/model.py +++ b/src/calibre/gui2/tag_browser/model.py @@ -73,6 +73,7 @@ class TagTreeItem(object): # {{{ is_searchable=category_key not in ['search']) elif self.type == self.TAG: self.tag = data + self.cached_average_rating = None self.tooltip = tooltip or '' @@ -119,6 +120,8 @@ class TagTreeItem(object): # {{{ return self.tag.avg_rating if not self.children: return self.tag.avg_rating # leaf node, avg_rating is correct + if self.cached_average_rating: + return self.cached_average_rating total = num = 0 for child in self.children: r = child.average_rating @@ -129,7 +132,8 @@ class TagTreeItem(object): # {{{ total += 1 num += self.tag.avg_rating try: - return num/float(total) + self.cached_average_rating = num/float(total) + return self.cached_average_rating except ZeroDivisionError: return 0