app/django/contrib/comments/views/userflags.py
changeset 54 03e267d67478
--- /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))