- Use modified port of Django 2.2 FileResponse. - Remove Django DownloadView library. Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
324 lines
10 KiB
Python
324 lines
10 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import os
|
|
|
|
from django.conf import settings
|
|
|
|
from mayan.apps.converter.classes import Layer
|
|
from mayan.apps.converter.layers import layer_saved_transformations
|
|
|
|
from ..literals import PAGE_RANGE_ALL
|
|
from ..models import DocumentType
|
|
|
|
from .literals import (
|
|
TEST_DOCUMENT_TYPE_DELETE_PERIOD, TEST_DOCUMENT_TYPE_DELETE_TIME_UNIT,
|
|
TEST_DOCUMENT_TYPE_LABEL, TEST_DOCUMENT_TYPE_LABEL_EDITED,
|
|
TEST_DOCUMENT_TYPE_QUICK_LABEL, TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED,
|
|
TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_PATH,
|
|
TEST_TRANSFORMATION_ARGUMENT, TEST_TRANSFORMATION_CLASS,
|
|
TEST_VERSION_COMMENT
|
|
)
|
|
|
|
__all__ = ('DocumentTestMixin',)
|
|
|
|
|
|
class DocumentTestMixin(object):
|
|
auto_create_document_type = True
|
|
auto_upload_document = True
|
|
test_document_filename = TEST_SMALL_DOCUMENT_FILENAME
|
|
test_document_path = None
|
|
|
|
def setUp(self):
|
|
super(DocumentTestMixin, self).setUp()
|
|
Layer.invalidate_cache()
|
|
|
|
self.test_documents = []
|
|
|
|
if self.auto_create_document_type:
|
|
self._create_document_type()
|
|
|
|
if self.auto_upload_document:
|
|
self.upload_document()
|
|
|
|
def tearDown(self):
|
|
for document_type in DocumentType.objects.all():
|
|
document_type.delete()
|
|
super(DocumentTestMixin, self).tearDown()
|
|
|
|
def _create_document_type(self):
|
|
self.test_document_type = DocumentType.objects.create(
|
|
label=TEST_DOCUMENT_TYPE_LABEL
|
|
)
|
|
|
|
def _calculate_test_document_path(self):
|
|
if not self.test_document_path:
|
|
self.test_document_path = os.path.join(
|
|
settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib',
|
|
'sample_documents', self.test_document_filename
|
|
)
|
|
|
|
def upload_document(self, label=None):
|
|
self._calculate_test_document_path()
|
|
|
|
if not label:
|
|
label = self.test_document_filename
|
|
|
|
with open(self.test_document_path, mode='rb') as file_object:
|
|
document = self.test_document_type.new_document(
|
|
file_object=file_object, label=label
|
|
)
|
|
|
|
self.test_document = document
|
|
self.test_documents.append(document)
|
|
self.test_document_page = document.latest_version.pages.first()
|
|
self.test_document_version = document.latest_version
|
|
|
|
|
|
class DocumentTypeViewTestMixin(object):
|
|
def _request_test_document_type_create_view(self):
|
|
return self.post(
|
|
viewname='documents:document_type_create',
|
|
data={
|
|
'label': TEST_DOCUMENT_TYPE_LABEL,
|
|
'delete_time_period': TEST_DOCUMENT_TYPE_DELETE_PERIOD,
|
|
'delete_time_unit': TEST_DOCUMENT_TYPE_DELETE_TIME_UNIT
|
|
}
|
|
)
|
|
|
|
def _request_test_document_type_delete_view(self):
|
|
return self.post(
|
|
viewname='documents:document_type_delete',
|
|
kwargs={'pk': self.test_document_type.pk}
|
|
)
|
|
|
|
def _request_test_document_type_edit_view(self):
|
|
return self.post(
|
|
viewname='documents:document_type_edit',
|
|
kwargs={'pk': self.test_document_type.pk},
|
|
data={
|
|
'label': TEST_DOCUMENT_TYPE_LABEL_EDITED,
|
|
}
|
|
)
|
|
|
|
def _request_test_document_type_list_view(self):
|
|
return self.get(viewname='documents:document_type_list')
|
|
|
|
|
|
class DocumentTypeQuickLabelViewTestMixin(object):
|
|
def _request_quick_label_create(self):
|
|
return self.post(
|
|
viewname='documents:document_type_filename_create',
|
|
kwargs={'pk': self.test_document_type.pk},
|
|
data={
|
|
'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL,
|
|
}
|
|
)
|
|
|
|
def _request_quick_label_delete(self):
|
|
return self.post(
|
|
viewname='documents:document_type_filename_delete',
|
|
kwargs={'pk': self.test_document_type_filename.pk}
|
|
)
|
|
|
|
def _request_quick_label_edit(self):
|
|
return self.post(
|
|
viewname='documents:document_type_filename_edit',
|
|
kwargs={'pk': self.test_document_type_filename.pk},
|
|
data={
|
|
'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED,
|
|
}
|
|
)
|
|
|
|
def _request_quick_label_list_view(self):
|
|
return self.get(
|
|
viewname='documents:document_type_filename_list',
|
|
kwargs={'pk': self.test_document_type.pk}
|
|
)
|
|
|
|
|
|
class DocumentTypeQuickLabelTestMixin(object):
|
|
def _create_test_quick_label(self):
|
|
self.test_document_type_filename = self.test_document_type.filenames.create(
|
|
filename=TEST_DOCUMENT_TYPE_QUICK_LABEL
|
|
)
|
|
|
|
|
|
class DocumentVersionTestMixin(object):
|
|
def _upload_new_version(self):
|
|
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
|
|
self.test_document.new_version(
|
|
comment=TEST_VERSION_COMMENT, file_object=file_object
|
|
)
|
|
|
|
|
|
class DocumentVersionViewTestMixin(object):
|
|
def _request_document_version_list_view(self):
|
|
return self.get(
|
|
viewname='documents:document_version_list',
|
|
kwargs={'pk': self.test_document.pk}
|
|
)
|
|
|
|
def _request_document_version_revert_view(self, document_version):
|
|
return self.post(
|
|
viewname='documents:document_version_revert',
|
|
kwargs={'pk': document_version.pk}
|
|
)
|
|
|
|
|
|
class DocumentViewTestMixin(object):
|
|
def _create_document_transformation(self):
|
|
layer_saved_transformations.add_transformation_to(
|
|
obj=self.test_document.pages.first(),
|
|
transformation_class=TEST_TRANSFORMATION_CLASS,
|
|
arguments=TEST_TRANSFORMATION_ARGUMENT
|
|
)
|
|
|
|
def _request_document_properties_view(self):
|
|
return self.get(
|
|
viewname='documents:document_properties',
|
|
kwargs={'pk': self.test_document.pk}
|
|
)
|
|
|
|
def _request_test_document_list_view(self):
|
|
return self.get(viewname='documents:document_list')
|
|
|
|
def _request_test_document_type_edit_get_view(self):
|
|
return self.get(
|
|
viewname='documents:document_document_type_edit',
|
|
kwargs={'pk': self.test_document.pk}
|
|
)
|
|
|
|
def _request_test_document_type_edit_post_view(self, document_type):
|
|
return self.post(
|
|
viewname='documents:document_document_type_edit',
|
|
kwargs={'pk': self.test_document.pk},
|
|
data={'document_type': document_type.pk}
|
|
)
|
|
|
|
def _request_multiple_document_type_edit(self, document_type):
|
|
return self.post(
|
|
viewname='documents:document_multiple_document_type_edit',
|
|
data={
|
|
'id_list': self.test_document.pk,
|
|
'document_type': document_type.pk
|
|
}
|
|
)
|
|
|
|
def _request_document_download_form_get_view(self):
|
|
return self.get(
|
|
viewname='documents:document_download_form', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_document_download_form_post_view(self):
|
|
return self.post(
|
|
viewname='documents:document_download_form', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_document_download_view(self):
|
|
return self.get(
|
|
viewname='documents:document_download', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_document_multiple_download_view(self):
|
|
return self.get(
|
|
viewname='documents:document_multiple_download',
|
|
data={'id_list': self.test_document.pk}
|
|
)
|
|
|
|
def _request_document_version_download(self, data=None):
|
|
data = data or {}
|
|
return self.get(
|
|
viewname='documents:document_version_download', kwargs={
|
|
'pk': self.test_document.latest_version.pk
|
|
}, data=data
|
|
)
|
|
|
|
def _request_document_update_page_count_view(self):
|
|
return self.post(
|
|
viewname='documents:document_update_page_count',
|
|
kwargs={'pk': self.test_document.pk}
|
|
)
|
|
|
|
def _request_document_multiple_update_page_count_view(self):
|
|
return self.post(
|
|
viewname='documents:document_multiple_update_page_count',
|
|
data={'id_list': self.test_document.pk}
|
|
)
|
|
|
|
def _request_document_clear_transformations_view(self):
|
|
return self.post(
|
|
viewname='documents:document_clear_transformations',
|
|
kwargs={'pk': self.test_document.pk}
|
|
)
|
|
|
|
def _request_document_multiple_clear_transformations(self):
|
|
return self.post(
|
|
viewname='documents:document_multiple_clear_transformations',
|
|
data={'id_list': self.test_document.pk}
|
|
)
|
|
|
|
def _request_document_print_view(self):
|
|
return self.get(
|
|
viewname='documents:document_print', kwargs={
|
|
'pk': self.test_document.pk,
|
|
}, data={
|
|
'page_group': PAGE_RANGE_ALL
|
|
}
|
|
)
|
|
|
|
def _request_empty_trash_view(self):
|
|
return self.post(viewname='documents:trash_can_empty')
|
|
|
|
|
|
class TrashedDocumentViewTestMixin(object):
|
|
def _request_document_trash_get_view(self):
|
|
return self.get(
|
|
viewname='documents:document_trash', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_document_trash_post_view(self):
|
|
return self.post(
|
|
viewname='documents:document_trash', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_trashed_document_restore_get_view(self):
|
|
return self.get(
|
|
viewname='documents:document_restore', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_trashed_document_restore_post_view(self):
|
|
return self.post(
|
|
viewname='documents:document_restore', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_trashed_document_delete_get_view(self):
|
|
return self.get(
|
|
viewname='documents:document_delete', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_trashed_document_delete_post_view(self):
|
|
return self.post(
|
|
viewname='documents:document_delete', kwargs={
|
|
'pk': self.test_document.pk
|
|
}
|
|
)
|
|
|
|
def _request_trashed_document_list_view(self):
|
|
return self.get(viewname='documents:document_list_deleted')
|