From 02eba1ab4ae8ef3d5478fc6f851251ed8cbc2a22 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 3 Mar 2011 12:14:20 -0400 Subject: [PATCH] Improve storage file handling --- apps/documents/models.py | 14 +++++++------- apps/documents/views.py | 6 ++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/apps/documents/models.py b/apps/documents/models.py index d138a53b4d..8cac9c9b3c 100755 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -96,8 +96,9 @@ class Document(models.Model): if save: self.save() - def read(self, count=1024): - return self.file.storage.open(self.file.url).read(count) + + def open(self): + return self.file.storage.open(self.file.path) @models.permalink @@ -107,7 +108,7 @@ class Document(models.Model): def update_checksum(self, save=True): if self.exists(): - self.checksum = unicode(CHECKSUM_FUNCTION(self.file.read())) + self.checksum = unicode(CHECKSUM_FUNCTION(self.open().read())) if save: self.save() @@ -122,22 +123,21 @@ class Document(models.Model): def save_to_file(self, filepath, buffer_size=1024*1024): - storage = self.file.storage.open(self.file.url) + input_descriptor = self.open() output_descriptor = open(filepath, 'wb') while 1: - copy_buffer = storage.read() + copy_buffer = input_descriptor.read() if copy_buffer: output_descriptor.write(copy_buffer) else: break - #input_descriptor.close() output_descriptor.close() return filepath def exists(self): - return self.file.storage.exists(self.file.url) + return self.file.storage.exists(self.file.path) def get_metadata_groups(self): diff --git a/apps/documents/views.py b/apps/documents/views.py index 31e7299921..fe887c8f60 100755 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -503,9 +503,7 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_ if filepath: return serve_file(request, File(file=open(filepath, 'r'))) #Save to a temporary location - document.file.open() - desc = document.file.storage.open(document.file.path) - filepath = from_descriptor_to_tempfile(desc, document.checksum) + filepath = from_descriptor_to_tempfile(document.open(), document.checksum) output_file = convert(filepath, size=size, format='jpg', quality=quality, extra_options=tranformation_string, page=page-1) return serve_file(request, File(file=open(output_file, 'r')), content_type='image/jpeg') except Exception, e: @@ -525,7 +523,7 @@ def document_download(request, document_id): document = get_object_or_404(Document, pk=document_id) try: #Test permissions and trigger exception - document.file.open() + document.open() return serve_file(request, document.file, save_as='%s' % document.get_fullname()) except Exception, e: messages.error(request, e)