diff -r 57b4279d8c4e -r 03e267d67478 app/django/contrib/comments/views/userflags.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/django/contrib/comments/views/userflags.py Fri Jul 18 18:22:23 2008 +0000 @@ -0,0 +1,62 @@ +from django.shortcuts import render_to_response, get_object_or_404 +from django.template import RequestContext +from django.http import Http404 +from django.contrib.comments.models import Comment, ModeratorDeletion, UserFlag +from django.contrib.auth.decorators import login_required +from django.http import HttpResponseRedirect +from django.conf import settings + +def flag(request, comment_id, extra_context=None, context_processors=None): + """ + Flags a comment. Confirmation on GET, action on POST. + + Templates: `comments/flag_verify`, `comments/flag_done` + Context: + comment + the flagged `comments.comments` object + """ + if extra_context is None: extra_context = {} + comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) + if request.POST: + UserFlag.objects.flag(comment, request.user) + return HttpResponseRedirect('%sdone/' % request.path) + return render_to_response('comments/flag_verify.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) +flag = login_required(flag) + +def flag_done(request, comment_id, extra_context=None, context_processors=None): + if extra_context is None: extra_context = {} + comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) + return render_to_response('comments/flag_done.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) + +def delete(request, comment_id, extra_context=None, context_processors=None): + """ + Deletes a comment. Confirmation on GET, action on POST. + + Templates: `comments/delete_verify`, `comments/delete_done` + Context: + comment + the flagged `comments.comments` object + """ + if extra_context is None: extra_context = {} + comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) + if not Comment.objects.user_is_moderator(request.user): + raise Http404 + if request.POST: + # If the comment has already been removed, silently fail. + if not comment.is_removed: + comment.is_removed = True + comment.save() + m = ModeratorDeletion(None, request.user.id, comment.id, None) + m.save() + return HttpResponseRedirect('%sdone/' % request.path) + return render_to_response('comments/delete_verify.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors)) +delete = login_required(delete) + +def delete_done(request, comment_id, extra_context=None, context_processors=None): + if extra_context is None: extra_context = {} + comment = get_object_or_404(Comment,pk=comment_id, site__id__exact=settings.SITE_ID) + return render_to_response('comments/delete_done.html', {'comment': comment}, + context_instance=RequestContext(request, extra_context, context_processors))