Finished fixing new document transformations
This commit is contained in:
@@ -110,7 +110,6 @@ def convert(input_filepath, cleanup_files=True, *args, **kwargs):
|
|||||||
unoconv_output = None
|
unoconv_output = None
|
||||||
|
|
||||||
output_filepath = create_image_cache_filename(input_filepath, *args, **kwargs)
|
output_filepath = create_image_cache_filename(input_filepath, *args, **kwargs)
|
||||||
print 'output_filepath', output_filepath
|
|
||||||
if os.path.exists(output_filepath):
|
if os.path.exists(output_filepath):
|
||||||
return output_filepath
|
return output_filepath
|
||||||
|
|
||||||
|
|||||||
@@ -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):
|
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 = []
|
arguments = []
|
||||||
if transformations:
|
if transformations:
|
||||||
for transformation in transformations:
|
for transformation in transformations:
|
||||||
print 'transformation: %s' % transformation
|
|
||||||
if transformation['transformation'] == TRANSFORMATION_RESIZE:
|
if transformation['transformation'] == TRANSFORMATION_RESIZE:
|
||||||
dimensions = []
|
dimensions = []
|
||||||
dimensions.append(unicode(transformation['arguments']['width']))
|
dimensions.append(unicode(transformation['arguments']['width']))
|
||||||
@@ -52,11 +50,9 @@ class ConverterClass(ConverterBase):
|
|||||||
arguments.append(u'%d%%' % transformation['arguments']['percent'])
|
arguments.append(u'%d%%' % transformation['arguments']['percent'])
|
||||||
|
|
||||||
elif transformation['transformation'] == TRANSFORMATION_ROTATE:
|
elif transformation['transformation'] == TRANSFORMATION_ROTATE:
|
||||||
print 'Do rotate'
|
|
||||||
arguments.append(u'-rotate')
|
arguments.append(u'-rotate')
|
||||||
arguments.append(u'%s' % transformation['arguments']['degrees'])
|
arguments.append(u'%s' % transformation['arguments']['degrees'])
|
||||||
|
|
||||||
print 'arguments: %s' % arguments
|
|
||||||
if format == u'jpg':
|
if format == u'jpg':
|
||||||
arguments.append(u'-quality')
|
arguments.append(u'-quality')
|
||||||
arguments.append(u'85')
|
arguments.append(u'85')
|
||||||
@@ -77,7 +73,6 @@ class ConverterClass(ConverterBase):
|
|||||||
if arguments:
|
if arguments:
|
||||||
command.extend(arguments)
|
command.extend(arguments)
|
||||||
command.append(unicode(output_filepath))
|
command.append(unicode(output_filepath))
|
||||||
print 'command: %s' % command
|
|
||||||
proc = subprocess.Popen(command, close_fds=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
|
proc = subprocess.Popen(command, close_fds=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||||
return_code = proc.wait()
|
return_code = proc.wait()
|
||||||
if return_code != 0:
|
if return_code != 0:
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class Document(models.Model):
|
|||||||
mimetype, page count and transformation when originally created
|
mimetype, page count and transformation when originally created
|
||||||
"""
|
"""
|
||||||
new_document = not self.pk
|
new_document = not self.pk
|
||||||
|
transformations = kwargs.pop('transformations', None)
|
||||||
super(Document, self).save(*args, **kwargs)
|
super(Document, self).save(*args, **kwargs)
|
||||||
|
|
||||||
if new_document:
|
if new_document:
|
||||||
@@ -99,7 +99,8 @@ class Document(models.Model):
|
|||||||
self.update_mimetype(save=False)
|
self.update_mimetype(save=False)
|
||||||
self.save()
|
self.save()
|
||||||
self.update_page_count(save=False)
|
self.update_page_count(save=False)
|
||||||
self.apply_default_transformations()
|
if transformations:
|
||||||
|
self.apply_default_transformations(transformations)
|
||||||
|
|
||||||
@models.permalink
|
@models.permalink
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
@@ -201,20 +202,20 @@ class Document(models.Model):
|
|||||||
"""
|
"""
|
||||||
return self.file.storage.exists(self.file.path)
|
return self.file.storage.exists(self.file.path)
|
||||||
|
|
||||||
def apply_default_transformations(self):
|
|
||||||
#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']
|
|
||||||
|
|
||||||
page_transformation.save()
|
def apply_default_transformations(self, transformations):
|
||||||
|
#Only apply default transformations on new documents
|
||||||
|
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()
|
||||||
|
|
||||||
|
|
||||||
class DocumentTypeFilename(models.Model):
|
class DocumentTypeFilename(models.Model):
|
||||||
|
|||||||
@@ -7,9 +7,6 @@ class SourceTransformationManager(models.Manager):
|
|||||||
ct = ContentType.objects.get_for_model(obj)
|
ct = ContentType.objects.get_for_model(obj)
|
||||||
return self.model.objects.filter(content_type=ct).filter(object_id=obj.pk)
|
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):
|
def get_for_object_as_list(self, obj):
|
||||||
warnings = []
|
warnings = []
|
||||||
transformations = []
|
transformations = []
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from converter.api import convert, cache_cleanup
|
from converter.api import convert, cache_cleanup
|
||||||
|
|
||||||
DEFAULT_STAGING_DIRECTORY = u'/tmp'
|
DEFAULT_STAGING_DIRECTORY = u'/tmp'
|
||||||
#from documents.conf.settings import DEFAULT_TRANSFORMATIONS
|
|
||||||
|
|
||||||
HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest()
|
HASH_FUNCTION = lambda x: hashlib.sha256(x).hexdigest()
|
||||||
#TODO: Do benchmarks
|
#TODO: Do benchmarks
|
||||||
|
|||||||
@@ -129,9 +129,13 @@ def upload_interactive(request, source_type=None, source_id=None):
|
|||||||
expand = True
|
expand = True
|
||||||
else:
|
else:
|
||||||
expand = False
|
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 = form.save()
|
||||||
instance.save()
|
instance.save()
|
||||||
|
instance.apply_default_transformations(transformations)
|
||||||
if document_type:
|
if document_type:
|
||||||
instance.document_type = document_type
|
instance.document_type = document_type
|
||||||
_handle_save_document(request, instance, form)
|
_handle_save_document(request, instance, form)
|
||||||
@@ -174,16 +178,18 @@ def upload_interactive(request, source_type=None, source_id=None):
|
|||||||
expand = True
|
expand = True
|
||||||
else:
|
else:
|
||||||
expand = False
|
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())
|
document = Document(file=staging_file.upload())
|
||||||
if document_type:
|
if document_type:
|
||||||
document.document_type = document_type
|
document.document_type = document_type
|
||||||
document.save()
|
document.save()
|
||||||
|
document.apply_default_transformations(transformations)
|
||||||
_handle_save_document(request, document, form)
|
_handle_save_document(request, document, form)
|
||||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
||||||
|
|
||||||
if staging_folder.delete_after_upload:
|
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)
|
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
messages.error(request, 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})
|
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', ''))
|
filename = getattr(uploaded_file, 'filename', getattr(uploaded_file, 'name', ''))
|
||||||
if filename.lower().endswith('zip'):
|
if filename.lower().endswith('zip'):
|
||||||
zfobj = zipfile.ZipFile(uploaded_file)
|
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)
|
StagingFile = create_staging_file_class(request, staging_folder.folder_path)
|
||||||
|
|
||||||
staging_file = StagingFile.get(staging_file_id)
|
staging_file = StagingFile.get(staging_file_id)
|
||||||
next = request.POST.get('next', request.GET.get('next', 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', None)))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
try:
|
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.'))
|
messages.success(request, _(u'Staging file delete successfully.'))
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
messages.error(request, e)
|
messages.error(request, _(u'Staging file delete error; %s.') % e)
|
||||||
return HttpResponseRedirect(next)
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
results = get_active_tab_links()
|
results = get_active_tab_links()
|
||||||
|
|||||||
Reference in New Issue
Block a user