Exemplo n.º 1
0
def post_comment(request, context, comment_id=None):
    clist = CommentList.for_object(context['object'])

    if clist.locked():
        return TemplateResponse(request, get_template('comments_locked.html', context['object'], request.is_ajax()), context, status=403)

    comment = None
    user = request.user
    if comment_id:
        try:
            comment = clist.get_comment(comment_id)
        except FlatComment.DoesNotExist:
            raise Http404()

        # make sure we don't change user when mod is editting a comment
        user = comment.user

        # you can only comment your own comments or you have to be a moderator
        if comment.user != request.user and not comments_settings.IS_MODERATOR_FUNC(request.user):
            return HttpResponseForbidden("You cannot edit other people's comments.")

        # Don't allow users to edit a comment after the allowed edit time has expired
        if comment.user == request.user and not comments_settings.IS_MODERATOR_FUNC(request.user) and comment.is_edit_timer_expired():
            if request.is_ajax():
                context.update({'comment': comment})
                return TemplateResponse(request, get_template('comment_detail_async.html', context['object']), context)
            return HttpResponseForbidden("The allowed time to edit the comment has expired.")

    data, files = None, None
    if request.method == 'POST':
        data, files = request.POST, request.FILES

    form = FlatCommentMultiForm(context['object'], user, data=data, files=files, instance=comment)
    if form.is_valid():
        comment, success, reason = form.post(request)
        if not success:
            return HttpResponseForbidden(reason)
        comment_updated.send(
            sender=comment.__class__,
            comment=comment,
            updating_user=request.user,
            date_updated=now()
        )

        if request.is_ajax():
            context.update({'comment': comment})
            return TemplateResponse(request, get_template('comment_detail_async.html', context['object']), context)
        return HttpResponseRedirect(comment.get_absolute_url(show_reversed(request)))

    context.update({
        'comment': comment,
        'form': form
    })
    return TemplateResponse(request, get_template('comment_form.html', context['object'], request.is_ajax()), context)
Exemplo n.º 2
0
def can_edit(user, comment):
    " {{ user|can_edit:comment }} "
    return comments_settings.IS_MODERATOR_FUNC(user) or comment.user == user
Exemplo n.º 3
0
def can_moderate(user):
    " {{ user|can_moderate }} "
    return comments_settings.IS_MODERATOR_FUNC(user)