From 95850a919a411139d405e1c5dae420351dde29d6 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sat, 11 Oct 2014 03:21:14 -0400 Subject: [PATCH] Cache a document's latest version --- mayan/apps/documents/models.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index 9a673902d6..816d4c53d6 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -78,6 +78,8 @@ class Document(models.Model): """ Defines a single document with it's fields and properties """ + _latest_versions = {} + uuid = models.CharField(max_length=48, blank=True, editable=False) document_type = models.ForeignKey(DocumentType, verbose_name=_(u'Document type'), related_name='documents', null=True, blank=True) description = models.TextField(blank=True, null=True, verbose_name=_(u'Description')) @@ -216,6 +218,8 @@ class Document(models.Model): new_version.save() logger.debug('new_version saved') + self.__class__._latest_versions[self.pk] = new_version + return new_version # Proxy methods @@ -279,7 +283,10 @@ class Document(models.Model): @property def latest_version(self): - return self.versions.order_by('timestamp').last() + if self.pk not in self.__class__._latest_versions: + self.__class__._latest_versions[self.pk] = self.versions.order_by('timestamp').last() + + return self.__class__._latest_versions[self.pk] @property def first_version(self):