Update DocumentVersionSignatureCreateForm
Use FilteredSelectionForm. Improve document signatures tests. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -62,6 +62,8 @@
|
||||
* Use FilteredSelectionForm to add a new ACLCreateForm.
|
||||
* Rename IndexListForm to IndexTemplateFilteredForm.
|
||||
* Use FilteredSelectionForm for IndexTemplateFilteredForm.
|
||||
* Use FilteredSelectionForm for DocumentVersionSignatureCreateForm.
|
||||
* Improve document signatures tests.
|
||||
|
||||
3.1.11 (2019-04-XX)
|
||||
===================
|
||||
|
||||
@@ -34,12 +34,20 @@ Move the development URL definitions for Rosetta and Debug toolbar
|
||||
to a separate URL file. Convert the single urls.py to a module to
|
||||
allow multiple URL files to be used.
|
||||
|
||||
|
||||
Settings
|
||||
^^^^^^^^
|
||||
|
||||
New default value for setting DOCUMENTS_HASH_BLOCK_SIZE is 65535.
|
||||
New default value for setting MIMETYPE_FILE_READ_SIZE is 1024.
|
||||
|
||||
User interface
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
Usage of select2 in more places (FilteredSelectionForm).
|
||||
Cabinets, Tags, Rebuild index.
|
||||
|
||||
|
||||
Other changes
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
@@ -86,6 +94,8 @@ Other changes
|
||||
* Use FilteredSelectionForm to add a new ACLCreateForm.
|
||||
* Rename IndexListForm to IndexTemplateFilteredForm.
|
||||
* Use FilteredSelectionForm for IndexTemplateFilteredForm.
|
||||
* Use FilteredSelectionForm for DocumentVersionSignatureCreateForm.
|
||||
* Improve document signatures tests.
|
||||
|
||||
Removals
|
||||
--------
|
||||
|
||||
@@ -5,8 +5,7 @@ import logging
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from mayan.apps.acls.models import AccessControlList
|
||||
from mayan.apps.common.forms import DetailForm
|
||||
from mayan.apps.common.forms import DetailForm, FilteredSelectionForm
|
||||
from mayan.apps.django_gpg.models import Key
|
||||
from mayan.apps.django_gpg.permissions import permission_key_sign
|
||||
|
||||
@@ -15,28 +14,30 @@ from .models import SignatureBaseModel
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DocumentVersionSignatureCreateForm(forms.Form):
|
||||
class DocumentVersionSignatureCreateForm(FilteredSelectionForm):
|
||||
key = forms.ModelChoiceField(
|
||||
label=_('Key'), queryset=Key.objects.none()
|
||||
)
|
||||
|
||||
passphrase = forms.CharField(
|
||||
label=_('Passphrase'), required=False,
|
||||
help_text=_(
|
||||
'The passphrase to unlock the key and allow it to be used to '
|
||||
'sign the document version.'
|
||||
), label=_('Passphrase'), required=False,
|
||||
widget=forms.widgets.PasswordInput
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
user = kwargs.pop('user', None)
|
||||
logger.debug('user: %s', user)
|
||||
super(
|
||||
DocumentVersionSignatureCreateForm, self
|
||||
).__init__(*args, **kwargs)
|
||||
|
||||
queryset = AccessControlList.objects.filter_by_access(
|
||||
permission_key_sign, user, queryset=Key.objects.private_keys()
|
||||
class Meta:
|
||||
allow_multiple = False
|
||||
field_name = 'key'
|
||||
label = _('Key')
|
||||
help_text = _(
|
||||
'Private key that will be used to sign this document version.'
|
||||
)
|
||||
|
||||
self.fields['key'].queryset = queryset
|
||||
permission = permission_key_sign
|
||||
queryset = Key.objects.private_keys()
|
||||
required = True
|
||||
widget_attributes = {'class': 'select2'}
|
||||
|
||||
|
||||
class DocumentVersionSignatureDetailForm(DetailForm):
|
||||
|
||||
22
mayan/apps/document_signatures/tests/mixins.py
Normal file
22
mayan/apps/document_signatures/tests/mixins.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.core.files import File
|
||||
|
||||
from mayan.apps.django_gpg.models import Key
|
||||
|
||||
from ..models import DetachedSignature
|
||||
|
||||
from .literals import TEST_KEY_FILE, TEST_SIGNATURE_FILE_PATH
|
||||
|
||||
|
||||
class SignaturesTestMixin(object):
|
||||
def _create_detached_signature(self):
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
self.test_signature = DetachedSignature.objects.create(
|
||||
document_version=self.document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
|
||||
def _create_test_key(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
self.test_key = Key.objects.create(key_data=file_object.read())
|
||||
@@ -4,7 +4,6 @@ import hashlib
|
||||
import logging
|
||||
import time
|
||||
|
||||
from django.core.files import File
|
||||
from django.test import override_settings
|
||||
|
||||
from mayan.apps.common.tests import BaseTestCase
|
||||
@@ -19,13 +18,13 @@ from ..models import DetachedSignature, EmbeddedSignature
|
||||
from ..tasks import task_verify_missing_embedded_signature
|
||||
|
||||
from .literals import (
|
||||
TEST_SIGNED_DOCUMENT_PATH, TEST_SIGNATURE_FILE_PATH, TEST_KEY_FILE,
|
||||
TEST_KEY_ID, TEST_SIGNATURE_ID
|
||||
TEST_SIGNED_DOCUMENT_PATH, TEST_KEY_FILE, TEST_KEY_ID, TEST_SIGNATURE_ID
|
||||
)
|
||||
from .mixins import SignaturesTestMixin
|
||||
|
||||
|
||||
@override_settings(OCR_AUTO_OCR=False)
|
||||
class DocumentSignaturesTestCase(BaseTestCase):
|
||||
class DocumentSignaturesTestCase(SignaturesTestMixin, BaseTestCase):
|
||||
def setUp(self):
|
||||
super(DocumentSignaturesTestCase, self).setUp()
|
||||
self.document_type = DocumentType.objects.create(
|
||||
@@ -123,66 +122,56 @@ class DocumentSignaturesTestCase(BaseTestCase):
|
||||
|
||||
def test_detached_signature_no_key(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
signature = DetachedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.document_version, document.latest_version)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.public_key_fingerprint, None)
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(self.test_signature.public_key_fingerprint, None)
|
||||
|
||||
def test_detached_signature_with_key(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
signature = DetachedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.document_version, document.latest_version)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.public_key_fingerprint, key.fingerprint)
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(
|
||||
self.test_signature.public_key_fingerprint, key.fingerprint
|
||||
)
|
||||
|
||||
def test_detached_signature_post_key_verify(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
signature = DetachedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.document_version, document.latest_version)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.public_key_fingerprint, None)
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(self.test_signature.public_key_fingerprint, None)
|
||||
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
@@ -196,23 +185,21 @@ class DocumentSignaturesTestCase(BaseTestCase):
|
||||
key = Key.objects.create(key_data=file_object.read())
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
signature = DetachedSignature.objects.first()
|
||||
|
||||
self.assertEqual(signature.document_version, document.latest_version)
|
||||
self.assertEqual(signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(signature.public_key_fingerprint, key.fingerprint)
|
||||
self.assertEqual(
|
||||
self.test_signature.document_version, self.document.latest_version
|
||||
)
|
||||
self.assertEqual(self.test_signature.key_id, TEST_KEY_ID)
|
||||
self.assertEqual(
|
||||
self.test_signature.public_key_fingerprint, key.fingerprint
|
||||
)
|
||||
|
||||
key.delete()
|
||||
|
||||
|
||||
@@ -2,11 +2,8 @@ from __future__ import absolute_import, unicode_literals
|
||||
|
||||
import logging
|
||||
|
||||
from django.core.files import File
|
||||
|
||||
from django_downloadview.test import assert_download_response
|
||||
|
||||
from mayan.apps.django_gpg.models import Key
|
||||
from mayan.apps.documents.models import DocumentVersion
|
||||
from mayan.apps.documents.tests import (
|
||||
GenericDocumentViewTestCase, TEST_DOCUMENT_PATH
|
||||
@@ -21,15 +18,14 @@ from ..permissions import (
|
||||
permission_document_version_signature_view
|
||||
)
|
||||
|
||||
from .literals import (
|
||||
TEST_SIGNATURE_FILE_PATH, TEST_SIGNED_DOCUMENT_PATH, TEST_KEY_FILE
|
||||
)
|
||||
from .literals import TEST_SIGNATURE_FILE_PATH, TEST_SIGNED_DOCUMENT_PATH
|
||||
from .mixins import SignaturesTestMixin
|
||||
|
||||
TEST_UNSIGNED_DOCUMENT_COUNT = 4
|
||||
TEST_SIGNED_DOCUMENT_COUNT = 2
|
||||
|
||||
|
||||
class SignaturesViewTestCase(GenericDocumentViewTestCase):
|
||||
class SignaturesViewTestCase(SignaturesTestMixin, GenericDocumentViewTestCase):
|
||||
def setUp(self):
|
||||
super(SignaturesViewTestCase, self).setUp()
|
||||
self.login_user()
|
||||
@@ -41,251 +37,198 @@ class SignaturesViewTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
|
||||
def test_signature_list_view_no_permission(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
response = self._request_document_version_signature_list_view(
|
||||
document=document
|
||||
document=self.document
|
||||
)
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_signature_list_view_with_access(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_view
|
||||
)
|
||||
|
||||
response = self._request_document_version_signature_list_view(
|
||||
document=document
|
||||
document=self.document
|
||||
)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['object_list'].count(), 1)
|
||||
|
||||
def _request_document_version_signature_details_view(self, signature):
|
||||
def _request_document_version_signature_details_view(self):
|
||||
return self.get(
|
||||
viewname='signatures:document_version_signature_details',
|
||||
args=(signature.pk,)
|
||||
args=(self.test_signature.pk,)
|
||||
)
|
||||
|
||||
def test_signature_detail_view_no_permission(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
signature = DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
response = self._request_document_version_signature_details_view(
|
||||
signature=signature
|
||||
)
|
||||
response = self._request_document_version_signature_details_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_signature_detail_view_with_access(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
signature = DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_view
|
||||
)
|
||||
|
||||
response = self._request_document_version_signature_details_view(
|
||||
signature=signature
|
||||
)
|
||||
response = self._request_document_version_signature_details_view()
|
||||
self.assertContains(
|
||||
response=response, text=signature.signature_id, status_code=200
|
||||
response=response, text=self.test_signature.signature_id,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def _request_document_version_signature_upload_view(self, document_version):
|
||||
def _request_document_version_signature_upload_view(self):
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
return self.post(
|
||||
viewname='signatures:document_version_signature_upload',
|
||||
args=(document_version.pk,),
|
||||
kwargs={'pk': self.document.latest_version.pk},
|
||||
data={'signature_file': file_object}
|
||||
)
|
||||
|
||||
def test_signature_upload_view_no_permission(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
response = self._request_document_version_signature_upload_view(
|
||||
document_version=document.latest_version
|
||||
)
|
||||
response = self._request_document_version_signature_upload_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(DetachedSignature.objects.count(), 0)
|
||||
|
||||
def test_signature_upload_view_with_access(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_upload
|
||||
)
|
||||
|
||||
response = self._request_document_version_signature_upload_view(
|
||||
document_version=document.latest_version
|
||||
)
|
||||
response = self._request_document_version_signature_upload_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
def _request_document_version_signature_download_view(self, signature):
|
||||
def _request_document_version_signature_download_view(self):
|
||||
return self.get(
|
||||
viewname='signatures:document_version_signature_download',
|
||||
args=(signature.pk,),
|
||||
kwargs={'pk': self.test_signature.pk}
|
||||
)
|
||||
|
||||
def test_signature_download_view_no_permission(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
signature = DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
response = self._request_document_version_signature_download_view(
|
||||
signature=signature
|
||||
)
|
||||
response = self._request_document_version_signature_download_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_signature_download_view_with_access(self):
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
signature = DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_download
|
||||
)
|
||||
|
||||
self.expected_content_type = 'application/octet-stream; charset=utf-8'
|
||||
|
||||
response = self._request_document_version_signature_download_view(
|
||||
signature=signature
|
||||
)
|
||||
response = self._request_document_version_signature_download_view()
|
||||
|
||||
with signature.signature_file as file_object:
|
||||
with self.test_signature.signature_file as file_object:
|
||||
assert_download_response(
|
||||
self, response=response, content=file_object.read(),
|
||||
)
|
||||
|
||||
def _request_document_version_signature_delete_view(self, signature):
|
||||
def _request_document_version_signature_delete_view(self):
|
||||
return self.post(
|
||||
viewname='signatures:document_version_signature_delete',
|
||||
args=(signature.pk,)
|
||||
kwargs={'pk': self.test_signature.pk}
|
||||
)
|
||||
|
||||
def test_signature_delete_view_no_permission(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
signature = DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_view
|
||||
)
|
||||
|
||||
response = self._request_document_version_signature_delete_view(
|
||||
signature=signature
|
||||
)
|
||||
response = self._request_document_version_signature_delete_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
self.assertEqual(DetachedSignature.objects.count(), 1)
|
||||
|
||||
def test_signature_delete_view_with_access(self):
|
||||
with open(TEST_KEY_FILE, mode='rb') as file_object:
|
||||
Key.objects.create(key_data=file_object.read())
|
||||
self._create_test_key()
|
||||
|
||||
with open(TEST_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
document = self.document_type.new_document(
|
||||
self.document = self.document_type.new_document(
|
||||
file_object=file_object
|
||||
)
|
||||
|
||||
with open(TEST_SIGNATURE_FILE_PATH, mode='rb') as file_object:
|
||||
signature = DetachedSignature.objects.create(
|
||||
document_version=document.latest_version,
|
||||
signature_file=File(file_object)
|
||||
)
|
||||
self._create_detached_signature()
|
||||
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_delete
|
||||
)
|
||||
self.grant_access(
|
||||
obj=document,
|
||||
obj=self.document,
|
||||
permission=permission_document_version_signature_view
|
||||
)
|
||||
|
||||
response = self._request_document_version_signature_delete_view(
|
||||
signature=signature
|
||||
)
|
||||
response = self._request_document_version_signature_delete_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(DetachedSignature.objects.count(), 0)
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ class DocumentVersionDetachedSignatureCreateView(FormView):
|
||||
passphrase = form.cleaned_data['passphrase'] or None
|
||||
|
||||
AccessControlList.objects.check_access(
|
||||
permissions=permission_key_sign, user=self.request.user, obj=key
|
||||
obj=key, permissions=permission_key_sign, user=self.request.user
|
||||
)
|
||||
|
||||
try:
|
||||
@@ -124,14 +124,8 @@ class DocumentVersionDetachedSignatureCreateView(FormView):
|
||||
) % self.get_document_version(),
|
||||
}
|
||||
|
||||
def get_form_kwargs(self):
|
||||
result = super(
|
||||
DocumentVersionDetachedSignatureCreateView, self
|
||||
).get_form_kwargs()
|
||||
|
||||
result.update({'user': self.request.user})
|
||||
|
||||
return result
|
||||
def get_form_extra_kwargs(self):
|
||||
return {'user': self.request.user}
|
||||
|
||||
def get_post_action_redirect(self):
|
||||
return reverse(
|
||||
@@ -193,7 +187,7 @@ class DocumentVersionEmbeddedSignatureCreateView(FormView):
|
||||
|
||||
return HttpResponseRedirect(
|
||||
reverse(
|
||||
'signatures:document_version_signature_list',
|
||||
viewname='signatures:document_version_signature_list',
|
||||
args=(new_version.pk,)
|
||||
)
|
||||
)
|
||||
@@ -223,14 +217,8 @@ class DocumentVersionEmbeddedSignatureCreateView(FormView):
|
||||
) % self.get_document_version(),
|
||||
}
|
||||
|
||||
def get_form_kwargs(self):
|
||||
result = super(
|
||||
DocumentVersionEmbeddedSignatureCreateView, self
|
||||
).get_form_kwargs()
|
||||
|
||||
result.update({'user': self.request.user})
|
||||
|
||||
return result
|
||||
def get_form_extra_kwargs(self):
|
||||
return {'user': self.request.user}
|
||||
|
||||
|
||||
class DocumentVersionSignatureDeleteView(SingleObjectDeleteView):
|
||||
|
||||
Reference in New Issue
Block a user