Add support for preserving the extension of document files when using the quick label feature. Added to the document properties edit view and the document upload view. Closes GitLab issue #360.
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -6,7 +6,10 @@ from django.conf import settings
|
||||
|
||||
from ..models import DocumentType
|
||||
|
||||
from .literals import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_FILENAME
|
||||
from .literals import (
|
||||
TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_FILENAME,
|
||||
TEST_DOCUMENT_TYPE_QUICK_LABEL
|
||||
)
|
||||
|
||||
__all__ = ('DocumentTestMixin',)
|
||||
|
||||
@@ -16,7 +19,7 @@ class DocumentTestMixin(object):
|
||||
auto_upload_document = True
|
||||
test_document_filename = TEST_SMALL_DOCUMENT_FILENAME
|
||||
|
||||
def create_document_type(self):
|
||||
def _create_document_type(self):
|
||||
self.document_type = DocumentType.objects.create(
|
||||
label=TEST_DOCUMENT_TYPE_LABEL
|
||||
)
|
||||
@@ -36,7 +39,7 @@ class DocumentTestMixin(object):
|
||||
)
|
||||
|
||||
if self.auto_create_document_type:
|
||||
self.create_document_type()
|
||||
self._create_document_type()
|
||||
|
||||
if self.auto_upload_document:
|
||||
self.document = self.upload_document()
|
||||
@@ -45,3 +48,10 @@ class DocumentTestMixin(object):
|
||||
for document_type in DocumentType.objects.all():
|
||||
document_type.delete()
|
||||
super(DocumentTestMixin, self).tearDown()
|
||||
|
||||
|
||||
class DocumentTypeQuickLabelTestMixin(object):
|
||||
def _create_quick_label(self):
|
||||
self.document_type_filename = self.document_type.filenames.create(
|
||||
filename=TEST_DOCUMENT_TYPE_QUICK_LABEL
|
||||
)
|
||||
|
||||
@@ -14,6 +14,7 @@ from .literals import (
|
||||
TEST_DOCUMENT_TYPE_LABEL, TEST_DOCUMENT_TYPE_LABEL_EDITED,
|
||||
TEST_DOCUMENT_TYPE_QUICK_LABEL, TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED
|
||||
)
|
||||
from .mixins import DocumentTypeQuickLabelTestMixin
|
||||
|
||||
|
||||
class DocumentTypeViewsTestCase(GenericDocumentViewTestCase):
|
||||
@@ -98,7 +99,7 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
|
||||
class DocumentTypeQuickLabelViewsTestCase(GenericDocumentViewTestCase):
|
||||
class DocumentTypeQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, GenericDocumentViewTestCase):
|
||||
def setUp(self):
|
||||
super(DocumentTypeQuickLabelViewsTestCase, self).setUp()
|
||||
self.login_user()
|
||||
@@ -130,11 +131,6 @@ class DocumentTypeQuickLabelViewsTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
self.assertEqual(self.document_type.filenames.count(), 1)
|
||||
|
||||
def _create_quick_label(self):
|
||||
self.document_type_filename = self.document_type.filenames.create(
|
||||
filename=TEST_DOCUMENT_TYPE_QUICK_LABEL
|
||||
)
|
||||
|
||||
def _request_quick_label_delete(self):
|
||||
return self.post(
|
||||
viewname='documents:document_type_filename_delete',
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
@@ -22,6 +24,7 @@ from .literals import (
|
||||
TEST_DOCUMENT_TYPE_2_LABEL, TEST_SMALL_DOCUMENT_FILENAME,
|
||||
TEST_TRANSFORMATION_ARGUMENT, TEST_TRANSFORMATION_NAME,
|
||||
)
|
||||
from .mixins import DocumentTypeQuickLabelTestMixin
|
||||
|
||||
|
||||
class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
@@ -558,3 +561,74 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
response = self._request_print_view()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class DocumentsQuickLabelViewsTestCase(DocumentTypeQuickLabelTestMixin, GenericDocumentViewTestCase):
|
||||
def setUp(self):
|
||||
super(DocumentsQuickLabelViewsTestCase, self).setUp()
|
||||
self.login_user()
|
||||
|
||||
def _request_document_quick_label_edit_view(self, extra_data=None):
|
||||
data = {
|
||||
'document_type_available_filenames': self.document_type_filename.pk,
|
||||
'label': '' # View needs at least an empty label for quick
|
||||
# label to work. Cause is unknown.
|
||||
}
|
||||
data.update(extra_data or {})
|
||||
|
||||
return self.post(
|
||||
viewname='documents:document_edit', args=(self.document.pk,),
|
||||
data=data
|
||||
)
|
||||
|
||||
def test_document_quick_label_no_permission(self):
|
||||
self._create_quick_label()
|
||||
response = self._request_document_quick_label_edit_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.document.refresh_from_db()
|
||||
|
||||
def test_document_quick_label_with_access(self):
|
||||
self._create_quick_label()
|
||||
self.grant_access(
|
||||
permission=permission_document_properties_edit, obj=self.document
|
||||
)
|
||||
response = self._request_document_quick_label_edit_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.document.refresh_from_db()
|
||||
self.assertEqual(
|
||||
self.document.label, self.document_type_filename.filename
|
||||
)
|
||||
|
||||
def test_document_quick_label_preserve_extension_with_access(self):
|
||||
self._create_quick_label()
|
||||
self.grant_access(
|
||||
permission=permission_document_properties_edit, obj=self.document
|
||||
)
|
||||
filename, extension = os.path.splitext(self.document.label)
|
||||
response = self._request_document_quick_label_edit_view(
|
||||
extra_data={'preserve_extension': True}
|
||||
)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.document.refresh_from_db()
|
||||
|
||||
self.assertEqual(
|
||||
self.document.label, '{}{}'.format(
|
||||
self.document_type_filename.filename, extension
|
||||
)
|
||||
)
|
||||
|
||||
def test_document_quick_label_no_preserve_extension_with_access(self):
|
||||
self._create_quick_label()
|
||||
self.grant_access(
|
||||
permission=permission_document_properties_edit, obj=self.document
|
||||
)
|
||||
filename, extension = os.path.splitext(self.document.label)
|
||||
response = self._request_document_quick_label_edit_view(
|
||||
extra_data={'preserve_extension': False}
|
||||
)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.document.refresh_from_db()
|
||||
|
||||
self.assertEqual(
|
||||
self.document.label, self.document_type_filename.filename
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user