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