From 7de09aae0fb465e1338adfad30507baffe6a2f04 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 4 Dec 2011 02:00:04 -0400 Subject: [PATCH] Add version support to the document image generation code --- apps/documents/models.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/apps/documents/models.py b/apps/documents/models.py index ef9220b277..a658826191 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -113,35 +113,39 @@ class Document(models.Model): self.date_added = datetime.datetime.now() super(Document, self).save(*args, **kwargs) - def get_cached_image_name(self, page): - document_page = self.pages.get(page_number=page) + def get_cached_image_name(self, page, version): + document_version = DocumentVersion.objects.get(pk=version) + document_page = document_version.documentpage_set.get(page_number=page) transformations, warnings = document_page.get_transformation_list() - hash_value = HASH_FUNCTION(u''.join([self.checksum, unicode(page), unicode(transformations)])) + hash_value = HASH_FUNCTION(u''.join([document_version.checksum, unicode(page), unicode(transformations)])) return os.path.join(CACHE_PATH, hash_value), transformations - def get_image_cache_name(self, page): - cache_file_path, transformations = self.get_cached_image_name(page) + def get_image_cache_name(self, page, version): + cache_file_path, transformations = self.get_cached_image_name(page, version) if os.path.exists(cache_file_path): return cache_file_path else: - document_file = document_save_to_temp_dir(self, self.checksum) + document_version = DocumentVersion.objects.get(pk=version) + document_file = document_save_to_temp_dir(document_version, document_version.checksum) return convert(document_file, output_filepath=cache_file_path, page=page, transformations=transformations, mimetype=self.file_mimetype) - def get_valid_image(self, size=DISPLAY_SIZE, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION): - image_cache_name = self.get_image_cache_name(page=page) + def get_valid_image(self, size=DISPLAY_SIZE, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION, version=None): + if not version: + version = self.latest_version.pk + image_cache_name = self.get_image_cache_name(page=page, version=version) return convert(image_cache_name, cleanup_files=False, size=size, zoom=zoom, rotation=rotation) - def get_image(self, size=DISPLAY_SIZE, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION, as_base64=False): + def get_image(self, size=DISPLAY_SIZE, page=DEFAULT_PAGE_NUMBER, zoom=DEFAULT_ZOOM_LEVEL, rotation=DEFAULT_ROTATION, as_base64=False, version=None): if zoom < ZOOM_MIN_LEVEL: zoom = ZOOM_MIN_LEVEL if zoom > ZOOM_MAX_LEVEL: zoom = ZOOM_MAX_LEVEL - rotation = rotation % 360 + rotation = rotation % 360 try: - file_path = self.get_valid_image(size=size, page=page, zoom=zoom, rotation=rotation) + file_path = self.get_valid_image(size=size, page=page, zoom=zoom, rotation=rotation, version=version) except UnknownFileFormat: file_path = get_icon_file_path(self.file_mimetype) except UnkownConvertError: @@ -184,6 +188,7 @@ class Document(models.Model): logger.debug('creating new document version') if version_update: new_version_dict = self.latest_version.get_new_version_dict(version_update) + logger.debug('new_version_dict: %s' % new_version_dict) new_version = DocumentVersion( document=self, file=file, @@ -203,9 +208,6 @@ class Document(models.Model): ) new_version.save() - - logger.debug('new_version_dict: %s' % new_version_dict) - logger.debug('new_version saved') return new_version @@ -461,7 +463,7 @@ class DocumentVersion(models.Model): self.save() def delete(self, *args, **kwargs): - super(DocumentVesion, self).delete(*args, **kwargs) + super(DocumentVersion, self).delete(*args, **kwargs) return self.file.storage.delete(self.file.path) def exists(self):