Initial commit of the converter image transformation refactor
This commit is contained in:
@@ -13,3 +13,11 @@ class RecentDocumentManager(models.Manager):
|
||||
to_delete = self.model.objects.filter(user=user)[RECENT_COUNT:]
|
||||
for recent_to_delete in to_delete:
|
||||
recent_to_delete.delete()
|
||||
|
||||
|
||||
class DocumentPageTransformationManager(models.Manager):
|
||||
def get_for_document_page(self, document_page):
|
||||
return self.model.objects.filter(document_page=document_page)
|
||||
|
||||
def get_for_document_page_as_list(self, document_page):
|
||||
return list([{'transformation': transformation['transformation'], 'arguments': eval(transformation['arguments'])} for transformation in self.get_for_document_page(document_page).values('transformation', 'arguments')])
|
||||
|
||||
@@ -12,12 +12,13 @@ from python_magic import magic
|
||||
from taggit.managers import TaggableManager
|
||||
from dynamic_search.api import register
|
||||
from converter.api import get_page_count
|
||||
from converter.api import backend
|
||||
from converter.api import get_available_transformations_choices
|
||||
|
||||
from documents.conf.settings import CHECKSUM_FUNCTION
|
||||
from documents.conf.settings import UUID_FUNCTION
|
||||
from documents.conf.settings import STORAGE_BACKEND
|
||||
from documents.managers import RecentDocumentManager
|
||||
from documents.managers import RecentDocumentManager, \
|
||||
DocumentPageTransformationManager
|
||||
|
||||
|
||||
def get_filename_from_uuid(instance, filename):
|
||||
@@ -259,9 +260,6 @@ class DocumentPage(models.Model):
|
||||
def get_absolute_url(self):
|
||||
return ('document_page_view', [self.pk])
|
||||
|
||||
def get_transformation_string(self):
|
||||
return backend.get_transformation_string(self.documentpagetransformation_set.values('transformation', 'arguments'))
|
||||
|
||||
|
||||
class DocumentPageTransformation(models.Model):
|
||||
"""
|
||||
@@ -270,9 +268,11 @@ class DocumentPageTransformation(models.Model):
|
||||
"""
|
||||
document_page = models.ForeignKey(DocumentPage, verbose_name=_(u'document page'))
|
||||
order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'), db_index=True)
|
||||
transformation = models.CharField(choices=backend.get_available_transformations_labels(), max_length=128, verbose_name=_(u'transformation'))
|
||||
transformation = models.CharField(choices=get_available_transformations_choices(), max_length=128, verbose_name=_(u'transformation'))
|
||||
arguments = models.TextField(blank=True, null=True, verbose_name=_(u'arguments'), help_text=_(u'Use dictionaries to indentify arguments, example: {\'degrees\':90}'))
|
||||
|
||||
objects = DocumentPageTransformationManager()
|
||||
|
||||
def __unicode__(self):
|
||||
return u'"%s" for %s' % (self.get_transformation_display(), unicode(self.document_page))
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ def document_edit(request, document_id):
|
||||
'object': document,
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
'''
|
||||
def calculate_converter_arguments(document, *args, **kwargs):
|
||||
size = kwargs.pop('size', PREVIEW_SIZE)
|
||||
quality = kwargs.pop('quality', QUALITY_DEFAULT)
|
||||
@@ -308,7 +308,7 @@ def calculate_converter_arguments(document, *args, **kwargs):
|
||||
}
|
||||
|
||||
return arguments, warnings
|
||||
|
||||
'''
|
||||
|
||||
def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_DEFAULT):
|
||||
check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
@@ -327,14 +327,17 @@ def get_document_image(request, document_id, size=PREVIEW_SIZE, quality=QUALITY_
|
||||
|
||||
rotation = int(request.GET.get('rotation', 0)) % 360
|
||||
|
||||
arguments, warnings = calculate_converter_arguments(document, size=size, file_format=DEFAULT_FILE_FORMAT, quality=quality, page=page, zoom=zoom, rotation=rotation)
|
||||
#arguments, warnings = calculate_converter_arguments(document, size=size, file_format=DEFAULT_FILE_FORMAT, quality=quality, page=page, zoom=zoom, rotation=rotation)
|
||||
|
||||
if warnings and (request.user.is_staff or request.user.is_superuser):
|
||||
for warning in warnings:
|
||||
messages.warning(request, _(u'Page transformation error: %s') % warning)
|
||||
#if warnings and (request.user.is_staff or request.user.is_superuser):
|
||||
# for warning in warnings:
|
||||
# messages.warning(request, _(u'Page transformation error: %s') % warning)
|
||||
|
||||
transformations = DocumentPageTransformation.objects.get_for_document_page_as_list(document)
|
||||
|
||||
try:
|
||||
output_file = convert_document(document, **arguments)
|
||||
#output_file = convert_document(document, **arguments)
|
||||
output_file = convert_document(document, size=size, file_format=DEFAULT_FILE_FORMAT, quality=quality, page=page, zoom=zoom, rotation=rotation, transformations=transformations)
|
||||
except UnkownConvertError, e:
|
||||
if request.user.is_staff or request.user.is_superuser:
|
||||
messages.error(request, e)
|
||||
|
||||
Reference in New Issue
Block a user