summaryrefslogtreecommitdiffstats
path: root/webapp/django/contrib/comments/views/userflags.py
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/django/contrib/comments/views/userflags.py')
-rw-r--r--webapp/django/contrib/comments/views/userflags.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/webapp/django/contrib/comments/views/userflags.py b/webapp/django/contrib/comments/views/userflags.py
new file mode 100644
index 0000000000..91518dc5dd
--- /dev/null
+++ b/webapp/django/contrib/comments/views/userflags.py
@@ -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))