Update documents app

Rename the DeletedDocument proxy model to a TrashedDocument.

Rename the deleted_document views to trashed_document.

Rename the document and deleted_document URL parameters to
trashed_document.

Update URL parameters to the '_id' form.

Add keyword arguments.

Update use of .filter_by_access().

Enclose trashed document restore method in a transaction.

Sort arguments.

Update app for compliance with MERCs 5 and 6.

Add document page view tests.

Add favorite document view tests.

Movernize tests.

Replace use of urlencode with furl.

Update views to use ExternalObjectMixin.

Refactor the document and version download views.

Rename the DocumentDocumentTypeEditView to DocumentChangeTypeView.

Move the trashed document views to their own module.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-01-28 05:25:48 -04:00
parent 7532429b0b
commit 74dfa53787
40 changed files with 1914 additions and 1615 deletions

View File

@@ -11,10 +11,10 @@ from mayan.apps.rest_api.tests import BaseAPITestCase
from ..models import Document, DocumentType
from ..permissions import (
permission_document_create, permission_document_delete,
permission_document_download, permission_document_edit,
permission_document_new_version, permission_document_properties_edit,
permission_document_restore, permission_document_trash,
permission_document_create, permission_document_download,
permission_document_edit, permission_document_new_version,
permission_document_properties_edit, permission_document_trash,
permission_trashed_document_delete, permission_trashed_document_restore,
permission_document_type_create, permission_document_type_delete,
permission_document_type_edit, permission_document_version_revert,
permission_document_version_view, permission_document_view
@@ -61,7 +61,7 @@ class DocumentTypeAPITestCase(BaseAPITestCase):
def _request_document_type_patch(self):
return self.patch(
viewname='rest_api:documenttype-detail', kwargs={
'document_type_pk': self.document_type.pk
'document_type_id': self.document_type.pk
}, data={'label': TEST_DOCUMENT_TYPE_LABEL_EDITED}
)
@@ -90,7 +90,7 @@ class DocumentTypeAPITestCase(BaseAPITestCase):
def _request_document_type_put(self):
return self.put(
viewname='rest_api:documenttype-detail', kwargs={
'document_type_pk': self.document_type.pk
'document_type_id': self.document_type.pk
}, data={'label': TEST_DOCUMENT_TYPE_LABEL_EDITED}
)
@@ -119,7 +119,7 @@ class DocumentTypeAPITestCase(BaseAPITestCase):
def _request_document_type_delete(self):
return self.delete(
viewname='rest_api:documenttype-detail', kwargs={
'document_type_pk': self.document_type.pk
'document_type_id': self.document_type.pk
}
)
@@ -207,7 +207,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
with open(TEST_DOCUMENT_PATH, mode='rb') as file_descriptor:
return self.post(
viewname='rest_api:document-version-list', kwargs={
'document_pk': self.document.pk
'document_id': self.document.pk
}, data={
'comment': '', 'file': file_descriptor,
}
@@ -247,8 +247,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_version_revert(self):
return self.delete(
viewname='rest_api:documentversion-detail', kwargs={
'document_pk': self.document.pk,
'document_version_pk': self.document.latest_version.pk
'document_id': self.document.pk,
'document_version_id': self.document.latest_version.pk
}
)
@@ -275,7 +275,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_version_list(self):
return self.get(
viewname='rest_api:document-version-list',
kwargs={'document_pk': self.document.pk}
kwargs={'document_id': self.document.pk}
)
def test_document_version_list_no_permission(self):
@@ -301,7 +301,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_download(self):
return self.get(
viewname='rest_api:document-download',
kwargs={'document_pk': self.document.pk}
kwargs={'document_id': self.document.pk}
)
def test_document_download_no_permission(self):
@@ -329,8 +329,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_version_download(self):
return self.get(
viewname='rest_api:documentversion-download', kwargs={
'document_pk': self.document.pk,
'document_version_pk': self.document.latest_version.pk,
'document_id': self.document.pk,
'document_version_id': self.document.latest_version.pk,
}
)
@@ -362,8 +362,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
response = self.get(
viewname='rest_api:documentversion-download', kwargs={
'document_pk': self.document.pk,
'document_version_pk': self.document.latest_version.pk,
'document_id': self.document.pk,
'document_version_id': self.document.latest_version.pk,
}, data={'preserve_extension': True}
)
@@ -380,8 +380,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_version_edit_via_patch(self):
return self.patch(
viewname='rest_api:documentversion-detail', kwargs={
'document_pk': self.document.pk,
'document_version_pk': self.document.latest_version.pk,
'document_id': self.document.pk,
'document_version_id': self.document.latest_version.pk,
}, data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED}
)
@@ -407,8 +407,8 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_version_edit_via_put(self):
return self.put(
viewname='rest_api:documentversion-detail', kwargs={
'document_pk': self.document.pk,
'document_version_pk': self.document.latest_version.pk,
'document_id': self.document.pk,
'document_version_id': self.document.latest_version.pk,
}, data={'comment': TEST_DOCUMENT_VERSION_COMMENT_EDITED}
)
@@ -434,7 +434,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_description_edit_via_patch(self):
return self.patch(
viewname='rest_api:document-detail',
kwargs={'document_pk': self.document.pk},
kwargs={'document_id': self.document.pk},
data={'description': TEST_DOCUMENT_DESCRIPTION_EDITED}
)
@@ -459,7 +459,7 @@ class DocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_description_edit_via_put(self):
return self.put(
viewname='rest_api:document-detail',
kwargs={'document_pk': self.document.pk},
kwargs={'document_id': self.document.pk},
data={'description': TEST_DOCUMENT_DESCRIPTION_EDITED}
)
@@ -491,8 +491,8 @@ class DocumentPageAPITestCase(DocumentTestMixin, BaseAPITestCase):
page = self.document.pages.first()
return self.get(
viewname='rest_api:documentpage-image', kwargs={
'document_pk': page.document.pk,
'document_version_pk': page.document_version.pk, 'document_page_pk': page.pk
'document_id': page.document.pk,
'document_version_id': page.document_version.pk, 'document_page_id': page.pk
}
)
@@ -518,7 +518,7 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_move_to_trash(self):
return self.delete(
viewname='rest_api:document-detail',
kwargs={'document_pk': self.document.pk}
kwargs={'document_id': self.document.pk}
)
def test_document_move_to_trash_no_permission(self):
@@ -540,7 +540,7 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_trashed_document_delete_view(self):
return self.delete(
viewname='rest_api:trasheddocument-detail',
kwargs={'document_pk': self.document.pk}
kwargs={'document_id': self.document.pk}
)
def test_trashed_document_delete_from_trash_no_access(self):
@@ -554,7 +554,7 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_trashed_document_delete_from_trash_with_access(self):
self.document = self.upload_document()
self.document.delete()
self.grant_access(permission=permission_document_delete, obj=self.document)
self.grant_access(permission=permission_trashed_document_delete, obj=self.document)
response = self._request_trashed_document_delete_view()
self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
self.assertEqual(Document.objects.count(), 0)
@@ -563,7 +563,7 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_trashed_document_detail_view(self):
return self.get(
viewname='rest_api:trasheddocument-detail',
kwargs={'document_pk': self.document.pk}
kwargs={'document_id': self.document.pk}
)
def test_trashed_document_detail_view_no_access(self):
@@ -608,7 +608,7 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_trashed_document_restore_view(self):
return self.post(
viewname='rest_api:trasheddocument-restore',
kwargs={'document_pk': self.document.pk}
kwargs={'document_id': self.document.pk}
)
def test_trashed_document_restore_no_access(self):
@@ -622,7 +622,7 @@ class TrashedDocumentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def test_trashed_document_restore_with_access(self):
self.document = self.upload_document()
self.document.delete()
self.grant_access(permission=permission_document_restore, obj=self.document)
self.grant_access(permission=permission_trashed_document_restore, obj=self.document)
response = self._request_trashed_document_restore_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Document.trash.count(), 0)