Ejemplo n.º 1
0
def comment_to_answer(request):
    if request.user.is_anonymous():
        msg = _('Sorry, only logged in users can convert comments to answers. '
                'Please <a href="%(sign_in_url)s">sign in</a>.') % \
                {'sign_in_url': url_utils.get_login_url()}
        raise exceptions.PermissionDenied(msg)

    form = forms.ProcessCommentForm(request.POST)
    if form.is_valid() == False:
        raise Http404

    comment = get_object_or_404(models.Post,
                                post_type='comment',
                                id=form.cleaned_data['comment_id'])

    if askbot_settings.READ_ONLY_MODE_ENABLED is False:
        request.user.repost_comment_as_answer(comment)

    return HttpResponseRedirect(comment.get_absolute_url())
Ejemplo n.º 2
0
def delete_comment(request):
    """ajax handler to delete comment
    """
    try:
        if request.user.is_anonymous():
            msg = _(
                'Sorry, you appear to be logged out and '
                'cannot delete comments. Please '
                '<a href="%(sign_in_url)s">sign in</a>.') % \
                {'sign_in_url': url_utils.get_login_url()}
            raise exceptions.PermissionDenied(msg)
        if request.is_ajax():

            form = forms.ProcessCommentForm(request.POST)

            if not form.is_valid():
                return HttpResponseBadRequest()

            comment_id = form.cleaned_data['comment_id']
            comment = get_object_or_404(models.Post,
                                        post_type='comment',
                                        id=comment_id)
            request.user.assert_can_delete_comment(comment)

            if askbot_settings.READ_ONLY_MODE_ENABLED:
                raise exceptions.PermissionDenied(
                    askbot_settings.READ_ONLY_MESSAGE)

            parent = comment.parent
            comment.delete()
            # attn: recalc denormalized field
            parent.comment_count = parent.comments.count()
            parent.save()
            parent.thread.reset_cached_data()

            avatar_size = form.cleaned_data['avatar_size']
            return __generate_comments_json(parent, request.user, avatar_size)

        raise exceptions.PermissionDenied(
            _('sorry, we seem to have some technical difficulties'))
    except exceptions.PermissionDenied as e:
        return HttpResponseForbidden(force_text(e),
                                     content_type='application/json')