Added view to remove documents from folders

This commit is contained in:
Roberto Rosario
2011-04-19 00:15:08 -04:00
parent f4a719f314
commit 842b975753
3 changed files with 51 additions and 1 deletions

View File

@@ -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])

View File

@@ -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'),
)

View File

@@ -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', []))