Improve duplicated document list view logic
Don't show documents with trashed duplicates. Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
@@ -28,6 +28,8 @@
|
||||
- Fix MAYAN_GUNICORN_TIMEOUT Docker image setting. GitLab issue #671.
|
||||
Thanks to Lennart Sauerbeck (@lennart_s) for the report.
|
||||
- Add makefile target to launch a production staging Docker image.
|
||||
- Improve duplicated document list view logic to not show
|
||||
documents with trashed duplicates.
|
||||
|
||||
3.2.8 (2019-10-01)
|
||||
==================
|
||||
|
||||
@@ -147,7 +147,7 @@ class DuplicatedDocumentManager(models.Manager):
|
||||
app_label='documents', model_name='Document'
|
||||
)
|
||||
return Document.objects.filter(
|
||||
pk__in=self.filter(documents__isnull=False).values_list(
|
||||
pk__in=self.filter(documents__in_trash=False).values_list(
|
||||
'document_id', flat=True
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,19 +5,68 @@ from ..permissions import permission_document_view
|
||||
from .base import GenericDocumentViewTestCase
|
||||
|
||||
|
||||
class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
def _upload_duplicate_document(self):
|
||||
self.upload_document()
|
||||
|
||||
def _request_duplicated_document_list_view(self):
|
||||
return self.get(viewname='documents:duplicated_document_list')
|
||||
|
||||
class DuplicatedDocumentsViewsTestMixin(object):
|
||||
def _request_document_duplicates_list_view(self):
|
||||
return self.get(
|
||||
viewname='documents:document_duplicates_list',
|
||||
kwargs={'pk': self.test_documents[0].pk}
|
||||
)
|
||||
|
||||
def _request_duplicated_document_list_view(self):
|
||||
return self.get(viewname='documents:duplicated_document_list')
|
||||
|
||||
def _upload_duplicate_document(self):
|
||||
self.upload_document()
|
||||
|
||||
|
||||
class DuplicatedDocumentsViewsTestCase(
|
||||
DuplicatedDocumentsViewsTestMixin, GenericDocumentViewTestCase
|
||||
):
|
||||
def test_document_duplicates_list_no_permissions(self):
|
||||
self._upload_duplicate_document()
|
||||
|
||||
response = self._request_document_duplicates_list_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_document_duplicates_list_with_access(self):
|
||||
self._upload_duplicate_document()
|
||||
self.grant_access(
|
||||
obj=self.test_documents[0],
|
||||
permission=permission_document_view
|
||||
)
|
||||
self.grant_access(
|
||||
obj=self.test_documents[1],
|
||||
permission=permission_document_view
|
||||
)
|
||||
|
||||
response = self._request_document_duplicates_list_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.test_documents[0].label,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_document_trashed_duplicates_list_with_full_access(self):
|
||||
self._upload_duplicate_document()
|
||||
self.grant_access(
|
||||
obj=self.test_documents[0],
|
||||
permission=permission_document_view
|
||||
)
|
||||
self.grant_access(
|
||||
obj=self.test_documents[1],
|
||||
permission=permission_document_view
|
||||
)
|
||||
self.test_documents[1].delete()
|
||||
|
||||
response = self._request_document_duplicates_list_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.test_documents[0].pk,
|
||||
status_code=200
|
||||
)
|
||||
self.assertNotContains(
|
||||
response=response, text=self.test_documents[1].pk,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_duplicated_document_list_no_permissions(self):
|
||||
self._upload_duplicate_document()
|
||||
|
||||
@@ -44,13 +93,7 @@ class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
status_code=200
|
||||
)
|
||||
|
||||
def test_document_duplicates_list_no_permissions(self):
|
||||
self._upload_duplicate_document()
|
||||
|
||||
response = self._request_document_duplicates_list_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_document_duplicates_list_with_access(self):
|
||||
def test_duplicated_trashed_document_list_with_access(self):
|
||||
self._upload_duplicate_document()
|
||||
self.grant_access(
|
||||
obj=self.test_documents[0],
|
||||
@@ -60,9 +103,14 @@ class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
|
||||
obj=self.test_documents[1],
|
||||
permission=permission_document_view
|
||||
)
|
||||
self.test_documents[1].delete()
|
||||
|
||||
response = self._request_document_duplicates_list_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.test_documents[0].label,
|
||||
response = self._request_duplicated_document_list_view()
|
||||
self.assertNotContains(
|
||||
response=response, text=self.test_documents[0].pk,
|
||||
status_code=200
|
||||
)
|
||||
self.assertNotContains(
|
||||
response=response, text=self.test_documents[1].pk,
|
||||
status_code=200
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user