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