Finish spliting duplicated document views

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-11-03 23:57:34 -04:00
parent e703d2df10
commit 82e6887b7f
8 changed files with 115 additions and 121 deletions

View File

@@ -49,14 +49,13 @@ from .handlers import (
from .links.document_links import (
link_document_clear_transformations, link_document_clone_transformations,
link_document_document_type_edit, link_document_download,
link_document_duplicates_list, link_document_edit, link_document_list,
link_document_list_recent_access, link_document_list_recent_added,
link_document_edit, link_document_list, link_document_list_recent_access,
link_document_list_recent_added,
link_document_multiple_clear_transformations,
link_document_multiple_document_type_edit,
link_document_multiple_download, link_document_preview,
link_document_print, link_document_properties,
link_document_quick_download, link_duplicated_document_list,
link_duplicated_document_scan
link_document_quick_download
)
from .links.document_version_links import (
link_document_version_download, link_document_version_list,
@@ -81,6 +80,10 @@ from .links.document_version_page_links import (
link_document_page_zoom_in, link_document_page_zoom_out,
link_document_pages, link_document_update_page_count
)
from .links.duplicated_document_links import (
link_document_duplicates_list, link_duplicated_document_list,
link_duplicated_document_scan
)
from .links.favorite_links import (
link_document_favorites_add, link_document_favorites_remove,
link_document_list_favorites, link_document_multiple_favorites_add,

View File

@@ -44,11 +44,6 @@ link_document_download = Link(
permissions=(permission_document_download,), text=_('Advanced download'),
view='documents:document_download_form',
)
link_document_duplicates_list = Link(
args='resolved_object.id', icon_class=icon_duplicated_document_list,
permissions=(permission_document_view,), text=_('Duplicates'),
view='documents:document_duplicates_list',
)
link_document_edit = Link(
args='resolved_object.id',
icon_class_path='mayan.apps.documents.icons.icon_document_edit',
@@ -108,13 +103,3 @@ link_document_quick_download = Link(
permissions=(permission_document_download,), text=_('Quick download'),
view='documents:document_download',
)
link_duplicated_document_list = Link(
icon_class=icon_duplicated_document_list, text=_('Duplicated documents'),
view='documents:duplicated_document_list'
)
link_duplicated_document_scan = Link(
icon_class=icon_duplicated_document_scan,
permissions=(permission_document_tools,),
text=_('Duplicated document scan'),
view='documents:duplicated_document_scan'
)

View File

@@ -0,0 +1,34 @@
from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from mayan.apps.converter.permissions import (
permission_transformation_delete, permission_transformation_edit
)
from mayan.apps.navigation.classes import Link
from ..icons import (
icon_document_list_recent_access, icon_recent_added_document_list,
icon_duplicated_document_list, icon_duplicated_document_scan
)
from ..permissions import (
permission_document_download, permission_document_properties_edit,
permission_document_print, permission_document_tools,
permission_document_view
)
link_document_duplicates_list = Link(
args='resolved_object.id', icon_class=icon_duplicated_document_list,
permissions=(permission_document_view,), text=_('Duplicates'),
view='documents:document_duplicates_list',
)
link_duplicated_document_list = Link(
icon_class=icon_duplicated_document_list, text=_('Duplicated documents'),
view='documents:duplicated_document_list'
)
link_duplicated_document_scan = Link(
icon_class=icon_duplicated_document_scan,
permissions=(permission_document_tools,),
text=_('Duplicated document scan'),
view='documents:duplicated_document_scan'
)

View File

@@ -9,7 +9,7 @@ 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}
kwargs={'document_id': self.test_documents[0].pk}
)
def _request_duplicated_document_list_view(self):
@@ -26,7 +26,7 @@ class DuplicatedDocumentsViewsTestCase(
self._upload_duplicate_document()
response = self._request_document_duplicates_list_view()
self.assertEqual(response.status_code, 403)
self.assertEqual(response.status_code, 404)
def test_document_duplicates_list_with_access(self):
self._upload_duplicate_document()

View File

@@ -39,12 +39,12 @@ from .views.document_views import (
DocumentView, RecentAccessDocumentListView, RecentAddedDocumentListView
)
from .views.duplicated_document_views import (
DocumentDuplicatesListView, DuplicatedDocumentListView
DocumentDuplicatesListView, DuplicatedDocumentListView,
ScanDuplicatedDocuments
)
from .views.favorite_document_views import (
FavoriteAddView, FavoriteDocumentListView, FavoriteRemoveView
)
from .views.misc_views import ScanDuplicatedDocuments
from .views.trashed_document_views import (
DocumentTrashView, EmptyTrashCanView, TrashedDocumentDeleteView,
TrashedDocumentListView, TrashedDocumentRestoreView
@@ -99,31 +99,6 @@ urlpatterns_document_types = [
),
]
urlpatterns_favorite_documents = [
url(
regex=r'^documents/favorites/$', view=FavoriteDocumentListView.as_view(),
name='document_list_favorites'
),
url(
regex=r'^documents/(?P<pk>\d+)/add_to_favorites/$',
view=FavoriteAddView.as_view(), name='document_add_to_favorites'
),
url(
regex=r'^documents/multiple/add_to_favorites/$', view=FavoriteAddView.as_view(),
name='document_multiple_add_to_favorites'
),
url(
regex=r'^documents/(?P<pk>\d+)/remove_from_favorites/$',
view=FavoriteRemoveView.as_view(),
name='document_remove_from_favorites'
),
url(
regex=r'^documents/multiple/remove_from_favorites/$',
view=FavoriteRemoveView.as_view(),
name='document_multiple_remove_from_favorites'
),
]
urlpatterns_documents = [
url(
regex=r'^documents/$', view=DocumentListView.as_view(), name='document_list'
@@ -138,11 +113,6 @@ urlpatterns_documents = [
view=RecentAddedDocumentListView.as_view(),
name='document_list_recent_added'
),
url(
regex=r'^documents/duplicated/$',
view=DuplicatedDocumentListView.as_view(),
name='duplicated_document_list'
),
url(
regex=r'^documents/(?P<pk>\d+)/preview/$', view=DocumentPreviewView.as_view(),
name='document_preview'
@@ -151,11 +121,6 @@ urlpatterns_documents = [
regex=r'^documents/(?P<pk>\d+)/properties/$', view=DocumentView.as_view(),
name='document_properties'
),
url(
regex=r'^documents/(?P<pk>\d+)/duplicates/$',
view=DocumentDuplicatesListView.as_view(),
name='document_duplicates_list'
),
url(
regex=r'^documents/(?P<pk>\d+)/type/$',
view=DocumentDocumentTypeEditView.as_view(),
@@ -314,7 +279,17 @@ urlpatterns_document_versions = [
),
]
urlpatterns_tools = [
urlpatterns_duplicated_documents = [
url(
regex=r'^documents/duplicated/$',
view=DuplicatedDocumentListView.as_view(),
name='duplicated_document_list'
),
url(
regex=r'^documents/(?P<document_id>\d+)/duplicates/$',
view=DocumentDuplicatesListView.as_view(),
name='document_duplicates_list'
),
url(
regex=r'^tools/documents/duplicated/scan/$',
view=ScanDuplicatedDocuments.as_view(),
@@ -322,6 +297,31 @@ urlpatterns_tools = [
),
]
urlpatterns_favorite_documents = [
url(
regex=r'^documents/favorites/$', view=FavoriteDocumentListView.as_view(),
name='document_list_favorites'
),
url(
regex=r'^documents/(?P<pk>\d+)/add_to_favorites/$',
view=FavoriteAddView.as_view(), name='document_add_to_favorites'
),
url(
regex=r'^documents/multiple/add_to_favorites/$', view=FavoriteAddView.as_view(),
name='document_multiple_add_to_favorites'
),
url(
regex=r'^documents/(?P<pk>\d+)/remove_from_favorites/$',
view=FavoriteRemoveView.as_view(),
name='document_remove_from_favorites'
),
url(
regex=r'^documents/multiple/remove_from_favorites/$',
view=FavoriteRemoveView.as_view(),
name='document_multiple_remove_from_favorites'
),
]
urlpatterns_trashed_documents = [
url(
regex=r'^documents/(?P<pk>\d+)/trash/$', view=DocumentTrashView.as_view(),
@@ -363,8 +363,8 @@ urlpatterns.extend(urlpatterns_documents)
urlpatterns.extend(urlpatterns_document_pages)
urlpatterns.extend(urlpatterns_document_types)
urlpatterns.extend(urlpatterns_document_versions)
urlpatterns.extend(urlpatterns_duplicated_documents)
urlpatterns.extend(urlpatterns_favorite_documents)
urlpatterns.extend(urlpatterns_tools)
urlpatterns.extend(urlpatterns_trashed_documents)
api_urls = [

View File

@@ -4,5 +4,4 @@ from .document_version_views import * # NOQA
from .document_views import * # NOQA
from .duplicated_document_views import * # NOQA
from .favorite_document_views import * # NOQA
from .misc_views import * # NOQA
from .trashed_document_views import * # NOQA

View File

@@ -2,45 +2,30 @@ from __future__ import absolute_import, unicode_literals
import logging
from django.conf import settings
from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.db import transaction
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _, ungettext
from django.utils.translation import ugettext_lazy as _
from mayan.apps.acls.models import AccessControlList
from mayan.apps.common.generics import (
FormView, MultipleObjectConfirmActionView, MultipleObjectFormActionView,
SingleObjectDetailView, SingleObjectListView
)
from mayan.apps.common.generics import ConfirmView
from mayan.apps.common.mixins import ExternalObjectMixin
from ..events import event_document_view
from ..icons import icon_document_list, icon_duplicated_document_list
from ..icons import icon_duplicated_document_list
from ..models import Document, DuplicatedDocument
from ..permissions import permission_document_view
from ..permissions import permission_document_tools, permission_document_view
from ..tasks import task_scan_duplicates_all
from .document_views import DocumentListView
__all__ = ('DocumentDuplicatesListView', 'DuplicatedDocumentListView')
__all__ = (
'DocumentDuplicatesListView', 'DuplicatedDocumentListView',
'ScanDuplicatedDocuments'
)
logger = logging.getLogger(__name__)
class DocumentDuplicatesListView(DocumentListView):
def dispatch(self, request, *args, **kwargs):
AccessControlList.objects.check_access(
obj=self.get_document(), permissions=(permission_document_view,),
user=self.request.user
)
return super(
DocumentDuplicatesListView, self
).dispatch(request, *args, **kwargs)
def get_document(self):
return get_object_or_404(klass=Document, pk=self.kwargs['pk'])
class DocumentDuplicatesListView(ExternalObjectMixin, DocumentListView):
external_object_class = Document
external_object_permission = permission_document_view
external_object_pk_url_kwarg = 'document_id'
def get_extra_context(self):
context = super(DocumentDuplicatesListView, self).get_extra_context()
@@ -54,8 +39,10 @@ class DocumentDuplicatesListView(DocumentListView):
'no_results_title': _(
'There are no duplicates for this document'
),
'object': self.get_document(),
'title': _('Duplicates for document: %s') % self.get_document(),
'object': self.external_object,
'title': _(
'Duplicates for document: %s'
) % self.external_object,
}
)
return context
@@ -63,7 +50,7 @@ class DocumentDuplicatesListView(DocumentListView):
def get_source_queryset(self):
try:
return DuplicatedDocument.objects.get(
document=self.get_document()
document=self.external_object
).documents.all()
except DuplicatedDocument.DoesNotExist:
return Document.objects.none()
@@ -92,3 +79,17 @@ class DuplicatedDocumentListView(DocumentListView):
}
)
return context
class ScanDuplicatedDocuments(ConfirmView):
extra_context = {
'title': _('Scan for duplicated documents?')
}
view_permission = permission_document_tools
def view_action(self):
task_scan_duplicates_all.apply_async()
messages.success(
message=_('Duplicated document scan queued successfully.'),
request=self.request
)

View File

@@ -1,28 +0,0 @@
from __future__ import absolute_import, unicode_literals
import logging
from django.contrib import messages
from django.utils.translation import ugettext_lazy as _
from mayan.apps.common.generics import ConfirmView
from ..permissions import permission_document_tools
from ..tasks import task_scan_duplicates_all
__all__ = ('ScanDuplicatedDocuments',)
logger = logging.getLogger(__name__)
class ScanDuplicatedDocuments(ConfirmView):
extra_context = {
'title': _('Scan for duplicated documents?')
}
view_permission = permission_document_tools
def view_action(self):
task_scan_duplicates_all.apply_async()
messages.success(
message=_('Duplicated document scan queued successfully.'),
request=self.request
)