Added view to remove documents from folders
This commit is contained in:
@@ -11,6 +11,9 @@ folder_list = {'text': _(u'folder list'), 'view': 'folder_list', 'famfam': 'fol
|
||||
folder_create = {'text': _('create folder'), 'view': 'folder_create', 'famfam': 'folder_add'}
|
||||
folder_edit = {'text': _('edit'), 'view': 'folder_edit', 'args': 'object.id', 'famfam': 'folder_edit'}
|
||||
folder_delete = {'text': _('delete'), 'view': 'folder_delete', 'args': 'object.id', 'famfam': 'folder_delete'}
|
||||
folder_document_multiple_remove = {'text': _('remove'), 'view': 'folder_document_multiple_remove', 'famfam': 'delete'}
|
||||
|
||||
register_multi_item_links(['folder_view'], [folder_document_multiple_remove])
|
||||
|
||||
register_links(Folder, [folder_edit, folder_delete])
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ urlpatterns = patterns('folders.views',
|
||||
url(r'^(?P<folder_id>\d+)/edit/$', 'folder_edit', (), 'folder_edit'),
|
||||
url(r'^(?P<folder_id>\d+)/delete/$', 'folder_delete', (), 'folder_delete'),
|
||||
url(r'^(?P<folder_id>\d+)/$', 'folder_view', (), 'folder_view'),
|
||||
#url(r'^(?P<folder_id>\d+)/add_document/(?P<folder_id>\d+)/$', 'folder_add_document', (), 'folder_add_document'),
|
||||
url(r'^document/multiple/remove/$', 'folder_document_multiple_remove', (), 'folder_document_multiple_remove'),
|
||||
|
||||
url(r'^add_document/(?P<document_id>\d+)/$', 'folder_add_document', (), 'folder_add_document'),
|
||||
)
|
||||
|
||||
@@ -134,6 +134,8 @@ def folder_view(request, folder_id):
|
||||
'hide_object': True,
|
||||
'title': _(u'documents in folder: %s') % folder,
|
||||
'multi_select_as_buttons': True,
|
||||
'object': folder,
|
||||
'object_name': _(u'folder'),
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@@ -167,3 +169,47 @@ def folder_add_document(request, document_id):
|
||||
'document': document, 'folder': folder})
|
||||
|
||||
return HttpResponseRedirect(previous)
|
||||
|
||||
|
||||
def folder_document_remove(request, folder_document_id=None, folder_document_id_list=None):
|
||||
post_action_redirect = None
|
||||
|
||||
if folder_document_id:
|
||||
folder_documents = [get_object_or_404(FolderDocument, pk=folder_document_id)]
|
||||
elif folder_document_id_list:
|
||||
folder_documents = [get_object_or_404(FolderDocument, pk=folder_document_id) for folder_document_id in folder_document_id_list.split(',')]
|
||||
else:
|
||||
messages.error(request, _(u'Must provide at least one folder document.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/')))
|
||||
next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/')))
|
||||
|
||||
if request.method == 'POST':
|
||||
for folder_document in folder_documents:
|
||||
try:
|
||||
folder_document.delete()
|
||||
messages.success(request, _(u'Document: %s removed successfully.') % folder_document)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Document: %(document)s delete error: %(error)s') % {
|
||||
'document': folder_document, 'error': e})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
context = {
|
||||
'object_name': _(u'folder document'),
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
}
|
||||
if len(folder_documents) == 1:
|
||||
context['object'] = folder_documents[0]
|
||||
context['title'] = _(u'Are you sure you with to remove the document: %s?') % ', '.join([unicode(d) for d in folder_documents])
|
||||
elif len(folder_documents) > 1:
|
||||
context['title'] = _(u'Are you sure you with to remove the documents: %s?') % ', '.join([unicode(d) for d in folder_documents])
|
||||
|
||||
return render_to_response('generic_confirm.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def folder_document_multiple_remove(request):
|
||||
return folder_document_remove(request, folder_document_id_list=request.GET.get('id_list', []))
|
||||
|
||||
Reference in New Issue
Block a user