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 ( from .links.document_links import (
link_document_clear_transformations, link_document_clone_transformations, link_document_clear_transformations, link_document_clone_transformations,
link_document_document_type_edit, link_document_download, link_document_document_type_edit, link_document_download,
link_document_duplicates_list, link_document_edit, link_document_list, link_document_edit, link_document_list, link_document_list_recent_access,
link_document_list_recent_access, link_document_list_recent_added, link_document_list_recent_added,
link_document_multiple_clear_transformations, link_document_multiple_clear_transformations,
link_document_multiple_document_type_edit, link_document_multiple_document_type_edit,
link_document_multiple_download, link_document_preview, link_document_multiple_download, link_document_preview,
link_document_print, link_document_properties, link_document_print, link_document_properties,
link_document_quick_download, link_duplicated_document_list, link_document_quick_download
link_duplicated_document_scan
) )
from .links.document_version_links import ( from .links.document_version_links import (
link_document_version_download, link_document_version_list, 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_page_zoom_in, link_document_page_zoom_out,
link_document_pages, link_document_update_page_count 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 ( from .links.favorite_links import (
link_document_favorites_add, link_document_favorites_remove, link_document_favorites_add, link_document_favorites_remove,
link_document_list_favorites, link_document_multiple_favorites_add, 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'), permissions=(permission_document_download,), text=_('Advanced download'),
view='documents:document_download_form', 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( link_document_edit = Link(
args='resolved_object.id', args='resolved_object.id',
icon_class_path='mayan.apps.documents.icons.icon_document_edit', 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'), permissions=(permission_document_download,), text=_('Quick download'),
view='documents:document_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): def _request_document_duplicates_list_view(self):
return self.get( return self.get(
viewname='documents:document_duplicates_list', 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): def _request_duplicated_document_list_view(self):
@@ -26,7 +26,7 @@ class DuplicatedDocumentsViewsTestCase(
self._upload_duplicate_document() self._upload_duplicate_document()
response = self._request_document_duplicates_list_view() 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): def test_document_duplicates_list_with_access(self):
self._upload_duplicate_document() self._upload_duplicate_document()

View File

@@ -39,12 +39,12 @@ from .views.document_views import (
DocumentView, RecentAccessDocumentListView, RecentAddedDocumentListView DocumentView, RecentAccessDocumentListView, RecentAddedDocumentListView
) )
from .views.duplicated_document_views import ( from .views.duplicated_document_views import (
DocumentDuplicatesListView, DuplicatedDocumentListView DocumentDuplicatesListView, DuplicatedDocumentListView,
ScanDuplicatedDocuments
) )
from .views.favorite_document_views import ( from .views.favorite_document_views import (
FavoriteAddView, FavoriteDocumentListView, FavoriteRemoveView FavoriteAddView, FavoriteDocumentListView, FavoriteRemoveView
) )
from .views.misc_views import ScanDuplicatedDocuments
from .views.trashed_document_views import ( from .views.trashed_document_views import (
DocumentTrashView, EmptyTrashCanView, TrashedDocumentDeleteView, DocumentTrashView, EmptyTrashCanView, TrashedDocumentDeleteView,
TrashedDocumentListView, TrashedDocumentRestoreView 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 = [ urlpatterns_documents = [
url( url(
regex=r'^documents/$', view=DocumentListView.as_view(), name='document_list' regex=r'^documents/$', view=DocumentListView.as_view(), name='document_list'
@@ -138,11 +113,6 @@ urlpatterns_documents = [
view=RecentAddedDocumentListView.as_view(), view=RecentAddedDocumentListView.as_view(),
name='document_list_recent_added' name='document_list_recent_added'
), ),
url(
regex=r'^documents/duplicated/$',
view=DuplicatedDocumentListView.as_view(),
name='duplicated_document_list'
),
url( url(
regex=r'^documents/(?P<pk>\d+)/preview/$', view=DocumentPreviewView.as_view(), regex=r'^documents/(?P<pk>\d+)/preview/$', view=DocumentPreviewView.as_view(),
name='document_preview' name='document_preview'
@@ -151,11 +121,6 @@ urlpatterns_documents = [
regex=r'^documents/(?P<pk>\d+)/properties/$', view=DocumentView.as_view(), regex=r'^documents/(?P<pk>\d+)/properties/$', view=DocumentView.as_view(),
name='document_properties' name='document_properties'
), ),
url(
regex=r'^documents/(?P<pk>\d+)/duplicates/$',
view=DocumentDuplicatesListView.as_view(),
name='document_duplicates_list'
),
url( url(
regex=r'^documents/(?P<pk>\d+)/type/$', regex=r'^documents/(?P<pk>\d+)/type/$',
view=DocumentDocumentTypeEditView.as_view(), 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( url(
regex=r'^tools/documents/duplicated/scan/$', regex=r'^tools/documents/duplicated/scan/$',
view=ScanDuplicatedDocuments.as_view(), 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 = [ urlpatterns_trashed_documents = [
url( url(
regex=r'^documents/(?P<pk>\d+)/trash/$', view=DocumentTrashView.as_view(), 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_pages)
urlpatterns.extend(urlpatterns_document_types) urlpatterns.extend(urlpatterns_document_types)
urlpatterns.extend(urlpatterns_document_versions) urlpatterns.extend(urlpatterns_document_versions)
urlpatterns.extend(urlpatterns_duplicated_documents)
urlpatterns.extend(urlpatterns_favorite_documents) urlpatterns.extend(urlpatterns_favorite_documents)
urlpatterns.extend(urlpatterns_tools)
urlpatterns.extend(urlpatterns_trashed_documents) urlpatterns.extend(urlpatterns_trashed_documents)
api_urls = [ api_urls = [

View File

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

View File

@@ -2,45 +2,30 @@ from __future__ import absolute_import, unicode_literals
import logging import logging
from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.core.exceptions import PermissionDenied from django.utils.translation import ugettext_lazy as _
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 mayan.apps.acls.models import AccessControlList from mayan.apps.common.generics import ConfirmView
from mayan.apps.common.generics import ( from mayan.apps.common.mixins import ExternalObjectMixin
FormView, MultipleObjectConfirmActionView, MultipleObjectFormActionView,
SingleObjectDetailView, SingleObjectListView
)
from ..events import event_document_view from ..icons import icon_duplicated_document_list
from ..icons import icon_document_list, icon_duplicated_document_list
from ..models import Document, DuplicatedDocument 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 from .document_views import DocumentListView
__all__ = ('DocumentDuplicatesListView', 'DuplicatedDocumentListView') __all__ = (
'DocumentDuplicatesListView', 'DuplicatedDocumentListView',
'ScanDuplicatedDocuments'
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class DocumentDuplicatesListView(DocumentListView): class DocumentDuplicatesListView(ExternalObjectMixin, DocumentListView):
def dispatch(self, request, *args, **kwargs): external_object_class = Document
AccessControlList.objects.check_access( external_object_permission = permission_document_view
obj=self.get_document(), permissions=(permission_document_view,), external_object_pk_url_kwarg = 'document_id'
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'])
def get_extra_context(self): def get_extra_context(self):
context = super(DocumentDuplicatesListView, self).get_extra_context() context = super(DocumentDuplicatesListView, self).get_extra_context()
@@ -54,8 +39,10 @@ class DocumentDuplicatesListView(DocumentListView):
'no_results_title': _( 'no_results_title': _(
'There are no duplicates for this document' 'There are no duplicates for this document'
), ),
'object': self.get_document(), 'object': self.external_object,
'title': _('Duplicates for document: %s') % self.get_document(), 'title': _(
'Duplicates for document: %s'
) % self.external_object,
} }
) )
return context return context
@@ -63,7 +50,7 @@ class DocumentDuplicatesListView(DocumentListView):
def get_source_queryset(self): def get_source_queryset(self):
try: try:
return DuplicatedDocument.objects.get( return DuplicatedDocument.objects.get(
document=self.get_document() document=self.external_object
).documents.all() ).documents.all()
except DuplicatedDocument.DoesNotExist: except DuplicatedDocument.DoesNotExist:
return Document.objects.none() return Document.objects.none()
@@ -92,3 +79,17 @@ class DuplicatedDocumentListView(DocumentListView):
} }
) )
return context 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
)