Added a confirmation dialog to the document tag removal view
This commit is contained in:
@@ -47,7 +47,7 @@ register_links(Tag, [tag_tagged_item_list, tag_edit, tag_delete])
|
||||
|
||||
register_multi_item_links(['tag_list'], [tag_multiple_delete])
|
||||
|
||||
register_links(['tag_list', 'tag_remove', 'tag_delete', 'tag_edit', 'tag_tagged_item_list', 'tag_multiple_delete'], [tag_list], menu_name='secondary_menu')
|
||||
register_links(['tag_list', 'tag_delete', 'tag_edit', 'tag_tagged_item_list', 'tag_multiple_delete'], [tag_list], menu_name='secondary_menu')
|
||||
|
||||
register_sidebar_template(['document_tags'], 'tags_sidebar_template.html')
|
||||
|
||||
|
||||
@@ -18,17 +18,50 @@ from tags import tag_document_remove as tag_document_remove_link
|
||||
from tags import tag_tagged_item_list as tag_tagged_item_list_link
|
||||
|
||||
|
||||
def tag_remove(request, tag_id, document_id):
|
||||
def tag_remove(request, document_id, tag_id=None, tag_id_list=None):
|
||||
check_permissions(request.user, [PERMISSION_TAG_REMOVE])
|
||||
|
||||
tag = get_object_or_404(Tag, pk=tag_id)
|
||||
post_action_redirect = None
|
||||
|
||||
if tag_id:
|
||||
tags = [get_object_or_404(Tag, pk=tag_id)]
|
||||
elif tag_id_list:
|
||||
tags = [get_object_or_404(Tag, pk=tag_id) for tag_id in tag_id_list.split(',')]
|
||||
else:
|
||||
messages.error(request, _(u'Must provide at least one tag.'))
|
||||
return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
|
||||
|
||||
document = get_object_or_404(Document, pk=document_id)
|
||||
|
||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None)))
|
||||
document.tags.remove(tag)
|
||||
messages.success(request, _(u'Tag "%s" removed successfully.') % tag)
|
||||
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', '/')))
|
||||
|
||||
return HttpResponseRedirect(previous)
|
||||
if request.method == 'POST':
|
||||
for tag in tags:
|
||||
try:
|
||||
document.tags.remove(tag)
|
||||
messages.success(request, _(u'Tag "%s" removed successfully.') % tag)
|
||||
except Exception, e:
|
||||
messages.error(request, _(u'Error deleting tag "%(tag)s": %(error)s') % {
|
||||
'tag': tag, 'error': e
|
||||
})
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
context = {
|
||||
'previous': previous,
|
||||
'next': next,
|
||||
'form_icon': u'tag_blue_delete.png',
|
||||
'object': document,
|
||||
}
|
||||
|
||||
if len(tags) == 1:
|
||||
context['title'] = _(u'Are you sure you wish to remove the tag: %s?') % ', '.join([unicode(d) for d in tags])
|
||||
elif len(tags) > 1:
|
||||
context['title'] = _(u'Are you sure you wish to remove the tags: %s?') % ', '.join([unicode(d) for d in tags])
|
||||
|
||||
return render_to_response('generic_confirm.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def tag_add(request, document_id):
|
||||
|
||||
Reference in New Issue
Block a user