app/django/contrib/comments/views/userflags.py
author Pawel Solyga <Pawel.Solyga@gmail.com>
Tue, 30 Sep 2008 16:53:30 +0000
changeset 216 aac174b902b3
parent 54 03e267d67478
permissions -rw-r--r--
Change _readonly_field_as_table_row <td> tag class names to match those used in _field_as_table_row. That should actually go into previous commit. Patch by: Pawel Solyga Review by: to-be-reviewed

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