Initial duplicate finder commit

This commit is contained in:
Roberto Rosario
2011-02-20 18:25:11 -04:00
parent 8cc6731d67
commit c10845ab9c
4 changed files with 54 additions and 3 deletions

View File

@@ -44,6 +44,8 @@ document_edit = {'text':_('edit'), 'view':'document_edit', 'args':'object.id', '
document_edit_metadata = {'text':_('edit metadata'), 'view':'document_edit_metadata', 'args':'object.id', 'famfam':'page_edit', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_METADATA_EDIT]}}
document_preview = {'text':_('preview'), 'class':'fancybox', 'view':'document_preview', 'args':'object.id', 'famfam':'magnifier', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
document_download = {'text':_('download'), 'view':'document_download', 'args':'object.id', 'famfam':'page_save', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_DOWNLOAD]}}
document_find_duplicates = {'text':_('find duplicates'), 'view':'document_find_duplicates', 'args':'object.id', 'famfam':'page_refresh', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
document_find_all_duplicates = {'text':_('find all duplicates'), 'view':'document_find_all_duplicates', 'famfam':'page_refresh', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_VIEW]}}
document_page_transformation_create = {'text':_('create new transformation'), 'view':'document_page_transformation_create', 'args':'object.id', 'famfam':'pencil_add', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
document_page_transformation_edit = {'text':_('edit'), 'view':'document_page_transformation_edit', 'args':'object.id', 'famfam':'pencil_go', 'permissions':{'namespace':'documents', 'permissions':[PERMISSION_DOCUMENT_TRANSFORM]}}
@@ -55,7 +57,7 @@ document_page_go_back = {'text':_('return to document'), 'view':'document_view',
staging_file_preview = {'text':_('preview'), 'class':'fancybox-noscaling', 'view':'staging_file_preview', 'args':'object.id', 'famfam':'drive_magnify'}
staging_file_delete = {'text':_('delete'), 'view':'staging_file_delete', 'args':'object.id', 'famfam':'drive_delete'}
register_links(Document, [document_view, document_edit, document_edit_metadata, document_delete, document_download], menu_name='sidebar')
register_links(Document, [document_view, document_edit, document_edit_metadata, document_delete, document_download, document_find_duplicates], menu_name='sidebar')
register_links(Document, [document_list, document_create, document_create_multiple, document_create_sibling], menu_name='sidebar')
if ENABLE_SINGLE_DOCUMENT_UPLOAD:

View File

@@ -13,6 +13,7 @@ from converter.api import QUALITY_HIGH
urlpatterns = patterns('documents.views',
url(r'^document/list/$', 'document_list', (), 'document_list'),
url(r'^document/list/duplicates/$', 'document_find_all_duplicates', (), 'document_find_all_duplicates'),
url(r'^document/create/from/local/single/$', 'document_create', {'multiple':False}, 'document_create'),
url(r'^document/create/from/local/multiple/$', 'document_create', {'multiple':True}, 'document_create_multiple'),
url(r'^document/type/(?P<document_type_id>\d+)/upload/single/$', 'upload_document_with_type', {'multiple':False}, 'upload_document_with_type'),
@@ -27,6 +28,7 @@ urlpatterns = patterns('documents.views',
url(r'^document/(?P<document_id>\d+)/display/$', 'get_document_image', {'size':DISPLAY_SIZE,'quality':QUALITY_HIGH}, 'document_display'),
url(r'^document/(?P<document_id>\d+)/download/$', 'document_download', (), 'document_download'),
url(r'^document/(?P<document_id>\d+)/create/siblings/$', 'document_create_sibling', {'multiple':True if ENABLE_SINGLE_DOCUMENT_UPLOAD == False else False}, 'document_create_sibling'),
url(r'^document/(?P<document_id>\d+)/find_duplicates/$', 'document_find_duplicates', (), 'document_find_duplicates'),
url(r'^staging_file/(?P<staging_file_id>\w+)/preview/$', 'staging_file_preview', (), 'staging_file_preview'),
url(r'^staging_file/(?P<staging_file_id>\w+)/delete/$', 'staging_file_delete', (), 'staging_file_delete'),

View File

@@ -691,3 +691,45 @@ def document_page_transformation_delete(request, document_page_transformation_id
'document':document_page_transformation.document_page.document},
'previous':previous,
})
def document_find_duplicates(request, document_id):
permissions = [PERMISSION_DOCUMENT_VIEW]
try:
check_permissions(request.user, 'documents', permissions)
except Unauthorized, e:
raise Http404(e)
document = get_object_or_404(Document, pk=document_id)
return _find_duplicate_list(request, [document])
def _find_duplicate_list(request, source_document_list=Document.objects.all(), include_source=False):
permissions = [PERMISSION_DOCUMENT_VIEW]
try:
check_permissions(request.user, 'documents', permissions)
except Unauthorized, e:
raise Http404(e)
duplicated = []
for document in source_document_list:
results = Document.objects.filter(checksum=document.checksum)
if not include_source:
results = results.exclude(id=document.id)
duplicated.extend(results)
return render_to_response('generic_list.html', {
'object_list':duplicated,
'title':_(u'duplicated documents'),
}, context_instance=RequestContext(request))
def document_find_all_duplicates(request):
permissions = [PERMISSION_DOCUMENT_VIEW]
try:
check_permissions(request.user, 'documents', permissions)
except Unauthorized, e:
raise Http404(e)
return _find_duplicate_list(request, include_source=True)