Issue #56, Remove duplicate search feature
This commit is contained in:
@@ -22,7 +22,6 @@ from .events import (HISTORY_DOCUMENT_CREATED,
|
||||
from .links import (document_clear_image_cache,
|
||||
document_clear_transformations, document_delete,
|
||||
document_download, document_edit,
|
||||
document_find_all_duplicates, document_find_duplicates,
|
||||
document_history_view, document_list,
|
||||
document_list_recent, document_missing_list,
|
||||
document_multiple_delete,
|
||||
@@ -75,8 +74,8 @@ register_links(['documents:setup_document_type_metadata', 'documents:document_ty
|
||||
register_links([DocumentTypeFilename, 'documents:document_type_filename_list', 'documents:document_type_filename_create'], [document_type_filename_create], menu_name='sidebar')
|
||||
|
||||
# Register document links
|
||||
register_links(Document, [document_view_simple, document_edit, document_print, document_delete, document_download, document_find_duplicates, document_clear_transformations])
|
||||
register_multi_item_links(['documents:document_find_duplicates', 'folders:folder_view', 'index_instance_node_view', 'search', 'results', 'document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [document_multiple_clear_transformations, document_multiple_delete, document_multiple_download])
|
||||
register_links(Document, [document_view_simple, document_edit, document_print, document_delete, document_download, document_clear_transformations])
|
||||
register_multi_item_links(['folders:folder_view', 'index_instance_node_view', 'search', 'results', 'document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [document_multiple_clear_transformations, document_multiple_delete, document_multiple_download])
|
||||
|
||||
# Document Version links
|
||||
register_links(DocumentVersion, [document_version_revert, document_version_download])
|
||||
@@ -103,7 +102,7 @@ register_links('documents:document_page_transformation_create', [document_page_t
|
||||
register_links(['documents:document_page_transformation_edit', 'documents:document_page_transformation_delete'], [document_page_transformation_create], menu_name='sidebar')
|
||||
|
||||
register_diagnostic('documents', _(u'Documents'), document_missing_list)
|
||||
register_maintenance_links([document_find_all_duplicates, document_update_page_count, document_clear_image_cache], namespace='documents', title=_(u'Documents'))
|
||||
register_maintenance_links([document_update_page_count, document_clear_image_cache], namespace='documents', title=_(u'Documents'))
|
||||
register_model_list_columns(Document, [
|
||||
{
|
||||
'name': _(u'Thumbnail'), 'attribute':
|
||||
|
||||
@@ -46,8 +46,6 @@ document_edit = {'text': _(u'Edit'), 'view': 'documents:document_edit', 'args':
|
||||
document_download = {'text': _(u'Download'), 'view': 'documents:document_download', 'args': 'object.id', 'famfam': 'page_save', 'permissions': [PERMISSION_DOCUMENT_DOWNLOAD]}
|
||||
document_multiple_download = {'text': _(u'Download'), 'view': 'documents:document_multiple_download', 'famfam': 'page_save', 'permissions': [PERMISSION_DOCUMENT_DOWNLOAD]}
|
||||
document_version_download = {'text': _(u'Download'), 'view': 'documents:document_version_download', 'args': 'object.pk', 'famfam': 'page_save', 'permissions': [PERMISSION_DOCUMENT_DOWNLOAD]}
|
||||
document_find_duplicates = {'text': _(u'Find duplicates'), 'view': 'documents:document_find_duplicates', 'args': 'object.id', 'famfam': 'page_white_copy', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
|
||||
document_find_all_duplicates = {'text': _(u'Find all duplicates'), 'view': 'documents:document_find_all_duplicates', 'famfam': 'page_white_copy', 'permissions': [PERMISSION_DOCUMENT_VIEW], 'description': _(u'Search all the documents\' checksums and return a list of the exact matches.')}
|
||||
document_update_page_count = {'text': _(u'Update office documents\' page count'), 'view': 'documents:document_update_page_count', 'famfam': 'page_white_csharp', 'permissions': [PERMISSION_DOCUMENT_TOOLS], 'description': _(u'Update the page count of the office type documents. This is useful when enabling office document support after there were already office type documents in the database.')}
|
||||
document_clear_transformations = {'text': _(u'Clear transformations'), 'view': 'documents:document_clear_transformations', 'args': 'object.id', 'famfam': 'page_paintbrush', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
|
||||
document_multiple_clear_transformations = {'text': _(u'Clear transformations'), 'view': 'documents:document_multiple_clear_transformations', 'famfam': 'page_paintbrush', 'permissions': [PERMISSION_DOCUMENT_TRANSFORM]}
|
||||
|
||||
@@ -26,7 +26,6 @@ urlpatterns = patterns('documents.views',
|
||||
|
||||
url(r'^(?P<document_id>\d+)/download/$', 'document_download', (), 'document_download'),
|
||||
url(r'^multiple/download/$', 'document_multiple_download', (), 'document_multiple_download'),
|
||||
url(r'^(?P<document_id>\d+)/find_duplicates/$', 'document_find_duplicates', (), 'document_find_duplicates'),
|
||||
url(r'^(?P<document_id>\d+)/clear_transformations/$', 'document_clear_transformations', (), 'document_clear_transformations'),
|
||||
|
||||
url(r'^(?P<document_pk>\d+)/version/all/$', 'document_version_list', (), 'document_version_list'),
|
||||
@@ -34,7 +33,6 @@ urlpatterns = patterns('documents.views',
|
||||
url(r'^document/version/(?P<document_version_pk>\d+)/revert/$', 'document_version_revert', (), 'document_version_revert'),
|
||||
|
||||
url(r'^multiple/clear_transformations/$', 'document_multiple_clear_transformations', (), 'document_multiple_clear_transformations'),
|
||||
url(r'^duplicates/list/$', 'document_find_all_duplicates', (), 'document_find_all_duplicates'),
|
||||
url(r'^maintenance/update_page_count/$', 'document_update_page_count', (), 'document_update_page_count'),
|
||||
url(r'^maintenance/clear_image_cache/$', 'document_clear_image_cache', (), 'document_clear_image_cache'),
|
||||
|
||||
|
||||
@@ -398,60 +398,6 @@ def document_multiple_download(request):
|
||||
)
|
||||
|
||||
|
||||
def document_find_duplicates(request, document_id):
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_VIEW])
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, request.user, document)
|
||||
|
||||
extra_context = {
|
||||
'title': _(u'Duplicates of: %s') % document,
|
||||
'object': document,
|
||||
}
|
||||
return _find_duplicate_list(request, [document], include_source=True, confirmation=False, extra_context=extra_context)
|
||||
|
||||
|
||||
def _find_duplicate_list(request, source_document_list=Document.objects.all(), include_source=False, confirmation=True, extra_context=None):
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
|
||||
|
||||
if confirmation and request.method != 'POST':
|
||||
return render_to_response('main/generic_confirm.html', {
|
||||
'previous': previous,
|
||||
'title': _(u'Are you sure you wish to find all duplicates?'),
|
||||
'message': _(u'On large databases this operation may take some time to execute.'),
|
||||
'form_icon': u'page_refresh.png',
|
||||
}, context_instance=RequestContext(request))
|
||||
else:
|
||||
duplicated = []
|
||||
for document in source_document_list:
|
||||
if document.pk not in duplicated:
|
||||
results = DocumentVersion.objects.filter(checksum=document.latest_version.checksum).exclude(id__in=duplicated).exclude(pk=document.pk).values_list('document__pk', flat=True)
|
||||
duplicated.extend(results)
|
||||
|
||||
if include_source and results:
|
||||
duplicated.append(document.pk)
|
||||
context = {
|
||||
'hide_links': True,
|
||||
'multi_select_as_buttons': True,
|
||||
}
|
||||
|
||||
if extra_context:
|
||||
context.update(extra_context)
|
||||
|
||||
return document_list(
|
||||
request,
|
||||
object_list=Document.objects.filter(pk__in=duplicated),
|
||||
title=_(u'Duplicated documents'),
|
||||
extra_context=context
|
||||
)
|
||||
|
||||
|
||||
def document_find_all_duplicates(request):
|
||||
return _find_duplicate_list(request, include_source=True)
|
||||
|
||||
|
||||
def document_update_page_count(request):
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_TOOLS])
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ register_links(Folder, [folder_view, folder_edit, folder_delete, folder_acl_list
|
||||
register_links([Folder, 'folders:folder_list', 'folders:folder_create'], [folder_list, folder_create], menu_name='secondary_menu')
|
||||
register_links(['folders:document_folder_list', 'folders:folder_add_document'], [folder_add_document], menu_name="sidebar")
|
||||
|
||||
register_multi_item_links(['documents:document_find_duplicates', 'folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'indexing:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [folder_add_multiple_documents])
|
||||
register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'indexing:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [folder_add_multiple_documents])
|
||||
register_multi_item_links(['folders:folder_view'], [folder_document_multiple_remove])
|
||||
|
||||
register_top_menu(name='folders', link=folders_main_menu_link, children_views=['folders:folder_list', 'folders:folder_create', 'folders:folder_edit', 'folders:folder_delete', 'folders:folder_view', 'folders:folder_document_multiple_remove'])
|
||||
|
||||
@@ -33,7 +33,7 @@ register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_dele
|
||||
register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu')
|
||||
register_links(MetadataSet, [setup_metadata_set_edit, setup_metadata_set_members, setup_metadata_set_delete])
|
||||
register_links([MetadataSet, 'metadata:setup_metadata_set_list', 'metadata:setup_metadata_set_create'], [setup_metadata_set_list, setup_metadata_set_create], menu_name='secondary_menu')
|
||||
register_multi_item_links(['documents:document_find_duplicates', 'folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove])
|
||||
|
||||
register_setup(setup_metadata_set_list)
|
||||
register_setup(setup_metadata_type_list)
|
||||
|
||||
@@ -26,7 +26,7 @@ from .tasks import task_do_ocr
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
register_links(Document, [submit_document])
|
||||
register_multi_item_links(['documents:document_find_duplicates', 'folders:folder_view', 'indexing:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'document:document_list_recent', 'tags:tag_tagged_item_list'], [submit_document_multiple])
|
||||
register_multi_item_links(['folders:folder_view', 'indexing:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'document:document_list_recent', 'tags:tag_tagged_item_list'], [submit_document_multiple])
|
||||
register_multi_item_links(['ocr:queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete])
|
||||
register_links(['ocr:queue_document_list'], [queue_document_list], menu_name='secondary_menu')
|
||||
|
||||
|
||||
@@ -60,6 +60,6 @@ register_links(Document, [tag_document_list], menu_name='form_header')
|
||||
register_links(['tags:document_tags', 'tags:tag_remove', 'tag_multiple_remove', 'tag_attach'], [tag_attach], menu_name='sidebar')
|
||||
register_multi_item_links(['document_tags'], [single_document_multiple_tag_remove])
|
||||
|
||||
register_multi_item_links(['documents:document_find_duplicates', 'folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [tag_multiple_attach, multiple_documents_selection_tag_remove])
|
||||
register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [tag_multiple_attach, multiple_documents_selection_tag_remove])
|
||||
|
||||
document_search.add_model_field('tags__label', label=_(u'Tags'))
|
||||
|
||||
Reference in New Issue
Block a user