Finish spliting duplicated document views
Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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'
|
||||
)
|
||||
|
||||
34
mayan/apps/documents/links/duplicated_document_links.py
Normal file
34
mayan/apps/documents/links/duplicated_document_links.py
Normal 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'
|
||||
)
|
||||
@@ -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()
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
Reference in New Issue
Block a user