From b158b48556f7ddefff65f4824ad2cf9c155ec054 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 11 Oct 2014 03:30:41 -0400 Subject: [PATCH] Cache a document versions page count --- mayan/apps/documents/models.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index 816d4c53d6..30bae65e76 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -279,7 +279,7 @@ class Document(models.Model): @property def page_count(self): - return self.pages.count() + return self.latest_version.page_count @property def latest_version(self): @@ -313,6 +313,7 @@ class DocumentVersion(models.Model): """ _pre_open_hooks = {} _post_save_hooks = {} + _page_counts = {} @staticmethod def get_version_update_choices(document_version): @@ -456,6 +457,8 @@ class DocumentVersion(models.Model): if save: self.save() + self.__class__._page_counts[self.pk] = self.pages.count() + return detected_pages def apply_default_transformations(self, transformations): @@ -496,6 +499,11 @@ class DocumentVersion(models.Model): def delete(self, *args, **kwargs): self.file.storage.delete(self.file.path) + # Invalidate page count cache + self.__class__._page_counts[self.pk] = None + # Invalidate parent document's latest version cache + Document._latest_versions[self.document.pk] = None + return super(DocumentVersion, self).delete(*args, **kwargs) def exists(self): @@ -555,6 +563,13 @@ class DocumentVersion(models.Model): self.filename = u''.join([new_filename, extension]) self.save() + @property + def page_count(self): + if self.pk not in self.__class__._page_counts: + self.__class__._page_counts[self.pk] = self.pages.count() + + return self.__class__._page_counts[self.pk] + class DocumentTypeFilename(models.Model): """