diff --git a/apps/converter/api.py b/apps/converter/api.py index 32d92b5664..3d3e2e6aed 100644 --- a/apps/converter/api.py +++ b/apps/converter/api.py @@ -110,7 +110,6 @@ def convert(input_filepath, cleanup_files=True, *args, **kwargs): unoconv_output = None output_filepath = create_image_cache_filename(input_filepath, *args, **kwargs) - print 'output_filepath', output_filepath if os.path.exists(output_filepath): return output_filepath diff --git a/apps/converter/backends/graphicsmagick/base.py b/apps/converter/backends/graphicsmagick/base.py index c8b479a0aa..120b6fb4ee 100644 --- a/apps/converter/backends/graphicsmagick/base.py +++ b/apps/converter/backends/graphicsmagick/base.py @@ -34,11 +34,9 @@ class ConverterClass(ConverterBase): def convert_file(self, input_filepath, output_filepath, transformations=None, quality=QUALITY_DEFAULT, page=DEFAULT_PAGE_NUMBER, file_format=DEFAULT_FILE_FORMAT): - print 'convert_file' arguments = [] if transformations: for transformation in transformations: - print 'transformation: %s' % transformation if transformation['transformation'] == TRANSFORMATION_RESIZE: dimensions = [] dimensions.append(unicode(transformation['arguments']['width'])) @@ -52,11 +50,9 @@ class ConverterClass(ConverterBase): arguments.append(u'%d%%' % transformation['arguments']['percent']) elif transformation['transformation'] == TRANSFORMATION_ROTATE: - print 'Do rotate' arguments.append(u'-rotate') arguments.append(u'%s' % transformation['arguments']['degrees']) - print 'arguments: %s' % arguments if format == u'jpg': arguments.append(u'-quality') arguments.append(u'85') @@ -77,7 +73,6 @@ class ConverterClass(ConverterBase): if arguments: command.extend(arguments) command.append(unicode(output_filepath)) - print 'command: %s' % command proc = subprocess.Popen(command, close_fds=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) return_code = proc.wait() if return_code != 0: diff --git a/apps/documents/models.py b/apps/documents/models.py index aa344dce48..c058bdb694 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -90,7 +90,7 @@ class Document(models.Model): mimetype, page count and transformation when originally created """ new_document = not self.pk - + transformations = kwargs.pop('transformations', None) super(Document, self).save(*args, **kwargs) if new_document: @@ -99,7 +99,8 @@ class Document(models.Model): self.update_mimetype(save=False) self.save() self.update_page_count(save=False) - self.apply_default_transformations() + if transformations: + self.apply_default_transformations(transformations) @models.permalink def get_absolute_url(self): @@ -200,21 +201,21 @@ class Document(models.Model): exists in storage """ return self.file.storage.exists(self.file.path) + - def apply_default_transformations(self): + def apply_default_transformations(self, transformations): #Only apply default transformations on new documents - if DEFAULT_TRANSFORMATIONS and reduce(lambda x, y: x + y, [page.documentpagetransformation_set.count() for page in self.documentpage_set.all()]) == 0: - for transformation in DEFAULT_TRANSFORMATIONS: - if 'name' in transformation: - for document_page in self.documentpage_set.all(): - page_transformation = DocumentPageTransformation( - document_page=document_page, - order=0, - transformation=transformation['name']) - if 'arguments' in transformation: - page_transformation.arguments = transformation['arguments'] + if reduce(lambda x, y: x + y, [page.documentpagetransformation_set.count() for page in self.documentpage_set.all()]) == 0: + for transformation in transformations: + for document_page in self.documentpage_set.all(): + page_transformation = DocumentPageTransformation( + document_page=document_page, + order=0, + transformation=transformation.get('transformation'), + arguments=transformation.get('arguments') + ) - page_transformation.save() + page_transformation.save() class DocumentTypeFilename(models.Model): diff --git a/apps/sources/managers.py b/apps/sources/managers.py index aacccb31e8..f45e06e340 100644 --- a/apps/sources/managers.py +++ b/apps/sources/managers.py @@ -7,9 +7,6 @@ class SourceTransformationManager(models.Manager): ct = ContentType.objects.get_for_model(obj) return self.model.objects.filter(content_type=ct).filter(object_id=obj.pk) - #def get_for_object_as_list(self, obj): - # return list([{'transformation': transformation['transformation'], 'arguments': eval(transformation['arguments'])} for transformation in self.get_for_object(obj).values('transformation', 'arguments')]) - def get_for_object_as_list(self, obj): warnings = [] transformations = [] diff --git a/apps/sources/staging.py b/apps/sources/staging.py index ebb31a59d9..4a80435a3a 100644 --- a/apps/sources/staging.py +++ b/apps/sources/staging.py @@ -11,7 +11,6 @@ from django.utils.translation import ugettext_lazy as _ from converter.api import convert, cache_cleanup DEFAULT_STAGING_DIRECTORY = u'/tmp' -#from documents.conf.settings import DEFAULT_TRANSFORMATIONS HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest() #TODO: Do benchmarks diff --git a/apps/sources/views.py b/apps/sources/views.py index 2e2b42ed01..05766d78a9 100644 --- a/apps/sources/views.py +++ b/apps/sources/views.py @@ -129,9 +129,13 @@ def upload_interactive(request, source_type=None, source_id=None): expand = True else: expand = False - if (not expand) or (expand and not _handle_zip_file(request, request.FILES['file'], document_type)): + + transformations, errors = SourceTransformation.objects.get_for_object_as_list(web_form) + + if (not expand) or (expand and not _handle_zip_file(request, request.FILES['file'], document_type=document_type, transformations=transformations)): instance = form.save() instance.save() + instance.apply_default_transformations(transformations) if document_type: instance.document_type = document_type _handle_save_document(request, instance, form) @@ -174,16 +178,18 @@ def upload_interactive(request, source_type=None, source_id=None): expand = True else: expand = False - if (not expand) or (expand and not _handle_zip_file(request, staging_file.upload(), document_type)): + transformations, errors = SourceTransformation.objects.get_for_object_as_list(staging_folder) + if (not expand) or (expand and not _handle_zip_file(request, staging_file.upload(), document_type=document_type, transformations=transformations)): document = Document(file=staging_file.upload()) if document_type: document.document_type = document_type document.save() + document.apply_default_transformations(transformations) _handle_save_document(request, document, form) messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename) if staging_folder.delete_after_upload: - staging_file.delete(staging_folder.get_preview_size()) + staging_file.delete(preview_size=staging_folder.get_preview_size(), transformations=transformations) messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename) except Exception, e: messages.error(request, e) @@ -260,7 +266,7 @@ def _handle_save_document(request, document, form=None): create_history(HISTORY_DOCUMENT_CREATED, document, {'user': request.user}) -def _handle_zip_file(request, uploaded_file, document_type=None): +def _handle_zip_file(request, uploaded_file, document_type=None, transformations=None): filename = getattr(uploaded_file, 'filename', getattr(uploaded_file, 'name', '')) if filename.lower().endswith('zip'): zfobj = zipfile.ZipFile(uploaded_file) @@ -318,8 +324,8 @@ def staging_file_delete(request, source_type, source_id, staging_file_id): StagingFile = create_staging_file_class(request, staging_folder.folder_path) staging_file = StagingFile.get(staging_file_id) - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) + next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', '/'))) + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) if request.method == 'POST': try: @@ -330,7 +336,7 @@ def staging_file_delete(request, source_type, source_id, staging_file_id): ) messages.success(request, _(u'Staging file delete successfully.')) except Exception, e: - messages.error(request, e) + messages.error(request, _(u'Staging file delete error; %s.') % e) return HttpResponseRedirect(next) results = get_active_tab_links()