Fix document orientaton detection

GitLab issue #713. Thanks to Rob de Canha-Knight (@rssfed23)
for the report and debug information.

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-12-15 23:06:35 -04:00
parent 9a4f3f0332
commit 6c828eaf94
5 changed files with 52 additions and 50 deletions

View File

@@ -1,6 +1,12 @@
3.3.6 (2019-12-XX)
==================
- Make list toolbar stick to the top of the view when scrolling.
- Fix page count on some PDF files, and fix a Python 3 incompatibility.
GitLab merge !64. Thanks to O2 Graphics (@O2Graphics).
- Improve the executables paths on FreeBSD/OpenBSD. GitLab merge !63.
Thanks to O2 Graphics (@O2Graphics).
- Fix document orientaton detection. GitLab issue #713. Thanks to
Rob de Canha-Knight (@rssfed23) for the report and debug information.
3.3.5 (2019-12-13)
==================

View File

@@ -156,8 +156,8 @@ class DocumentVersion(models.Model):
for page in self.pages.all():
degrees = page.detect_orientation()
if degrees:
layer_saved_transformations.add_to_object(
obj=page, transformation=TransformationRotate,
layer_saved_transformations.add_transformation_to(
obj=page, transformation_class=TransformationRotate,
arguments='{{"degrees": {}}}'.format(360 - degrees)
)

View File

@@ -29,6 +29,7 @@ TEST_NON_ASCII_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png'
TEST_OFFICE_DOCUMENT = 'simple_2_page_document.doc'
TEST_PDF_DOCUMENT_FILENAME = 'mayan_11_1.pdf'
TEST_PDF_INDIRECT_ROTATE_LABEL = 'indirect_rotate.pdf'
TEST_PDF_ROTATE_ALTERNATE_LABEL = 'rotate_alternate.pdf'
TEST_SMALL_DOCUMENT_FILENAME = 'title_page.png'
TEST_SMALL_DOCUMENT_CHECKSUM = 'efa10e6cc21f83078aaa94d5cbe51de67b51af706143b\
afc7fd6d4c02124879a'
@@ -71,6 +72,10 @@ TEST_PDF_INDIRECT_ROTATE_PATH = os.path.join(
settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib',
'sample_documents', TEST_PDF_INDIRECT_ROTATE_LABEL
)
TEST_PDF_ROTATE_ALTERNATE_PATH = os.path.join(
settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib',
'sample_documents', TEST_PDF_ROTATE_ALTERNATE_LABEL
)
TEST_OFFICE_DOCUMENT_PATH = os.path.join(
settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib',
'sample_documents', TEST_OFFICE_DOCUMENT

View File

@@ -3,7 +3,10 @@ from __future__ import unicode_literals
from datetime import timedelta
import time
from django.test import override_settings
from mayan.apps.common.tests.base import BaseTestCase
from mayan.apps.converter.layers import layer_saved_transformations
from ..literals import STUB_EXPIRATION_INTERVAL
from ..models import (
@@ -12,18 +15,20 @@ from ..models import (
from .base import GenericDocumentTestCase
from .literals import (
TEST_DOCUMENT_TYPE_LABEL, TEST_MULTI_PAGE_TIFF_PATH,
TEST_PDF_INDIRECT_ROTATE_PATH, TEST_OFFICE_DOCUMENT_PATH,
TEST_SMALL_DOCUMENT_CHECKSUM, TEST_SMALL_DOCUMENT_FILENAME,
TEST_SMALL_DOCUMENT_MIMETYPE, TEST_SMALL_DOCUMENT_PATH,
TEST_SMALL_DOCUMENT_SIZE
TEST_DOCUMENT_TYPE_LABEL, TEST_MULTI_PAGE_TIFF,
TEST_OFFICE_DOCUMENT, TEST_PDF_INDIRECT_ROTATE_LABEL,
TEST_PDF_ROTATE_ALTERNATE_LABEL, TEST_SMALL_DOCUMENT_CHECKSUM,
TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_MIMETYPE,
TEST_SMALL_DOCUMENT_PATH, TEST_SMALL_DOCUMENT_SIZE
)
from .mixins import DocumentTestMixin
class DocumentTestCase(DocumentTestMixin, BaseTestCase):
class DocumentTestCase(GenericDocumentTestCase):
def test_document_creation(self):
self.assertEqual(self.test_document_type.label, TEST_DOCUMENT_TYPE_LABEL)
self.assertEqual(
self.test_document_type.label, TEST_DOCUMENT_TYPE_LABEL
)
self.assertEqual(self.test_document.exists(), True)
self.assertEqual(self.test_document.size, TEST_SMALL_DOCUMENT_SIZE)
@@ -32,7 +37,9 @@ class DocumentTestCase(DocumentTestMixin, BaseTestCase):
self.test_document.file_mimetype, TEST_SMALL_DOCUMENT_MIMETYPE
)
self.assertEqual(self.test_document.file_mime_encoding, 'binary')
self.assertEqual(self.test_document.label, TEST_SMALL_DOCUMENT_FILENAME)
self.assertEqual(
self.test_document.label, TEST_SMALL_DOCUMENT_FILENAME
)
self.assertEqual(
self.test_document.checksum, TEST_SMALL_DOCUMENT_CHECKSUM
)
@@ -125,41 +132,38 @@ class DocumentTestCase(DocumentTestMixin, BaseTestCase):
self.assertEqual(DeletedDocument.objects.count(), 0)
class PDFCompatibilityTestCase(BaseTestCase):
@override_settings(DOCUMENTS_FIX_ORIENTATION=True)
class PDFAlternateRotationTestCase(GenericDocumentTestCase):
test_document_filename = TEST_PDF_ROTATE_ALTERNATE_LABEL
def test_indirect_rotate(self):
self.test_document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
self.assertQuerysetEqual(
qs=Document.objects.all(), values=(repr(self.test_document),)
)
self.assertEqual(
layer_saved_transformations.get_transformations_for(
obj=self.test_document.latest_version.pages.first()
).count(), 1
)
with open(TEST_PDF_INDIRECT_ROTATE_PATH, mode='rb') as file_object:
self.test_document = self.test_document_type.new_document(
file_object=file_object
)
@override_settings(DOCUMENTS_FIX_ORIENTATION=True)
class PDFIndirectRotationTestCase(GenericDocumentTestCase):
test_document_filename = TEST_PDF_INDIRECT_ROTATE_LABEL
def test_alternate_rotate(self):
self.assertQuerysetEqual(
qs=Document.objects.all(), values=(repr(self.test_document),)
)
class OfficeDocumentTestCase(BaseTestCase):
def setUp(self):
super(OfficeDocumentTestCase, self).setUp()
self.test_document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_OFFICE_DOCUMENT_PATH, mode='rb') as file_object:
self.test_document = self.test_document_type.new_document(
file_object=file_object
)
def tearDown(self):
self.test_document_type.delete()
super(OfficeDocumentTestCase, self).tearDown()
class OfficeDocumentTestCase(GenericDocumentTestCase):
test_document_filename = TEST_OFFICE_DOCUMENT
def test_document_creation(self):
self.assertEqual(self.test_document.file_mimetype, 'application/msword')
self.assertEqual(
self.test_document.file_mimetype, 'application/msword'
)
self.assertEqual(
self.test_document.file_mime_encoding, 'binary'
)
@@ -170,21 +174,8 @@ class OfficeDocumentTestCase(BaseTestCase):
self.assertEqual(self.test_document.page_count, 2)
class MultiPageTiffTestCase(BaseTestCase):
def setUp(self):
super(MultiPageTiffTestCase, self).setUp()
self.test_document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_MULTI_PAGE_TIFF_PATH, mode='rb') as file_object:
self.test_document = self.test_document_type.new_document(
file_object=file_object
)
def tearDown(self):
self.test_document_type.delete()
super(MultiPageTiffTestCase, self).tearDown()
class MultiPageTiffTestCase(GenericDocumentTestCase):
test_document_filename = TEST_MULTI_PAGE_TIFF
def test_document_creation(self):
self.assertEqual(self.test_document.file_mimetype, 'image/tiff')