def wikify(request, id): node = get_object_or_404(Node, id=id) user = request.user if not user.is_authenticated(): raise AnonymousNotAllowedException(_('mark posts as community wiki')) if node.nis.wiki: if not user.can_cancel_wiki(node): raise NotEnoughRepPointsException( _('cancel a community wiki post')) if node.nstate.wiki.action_type == "wikify": node.nstate.wiki.cancel() else: node.nstate.wiki = None else: if not user.can_wikify(node): raise NotEnoughRepPointsException( _('mark posts as community wiki')) WikifyAction(node=node, user=user, ip=request.META['REMOTE_ADDR']).save() return RefreshPageCommand()
def close(request, id, close): if close and not request.POST: return render_to_response('node/report.html', {'types': settings.CLOSE_TYPES}) question = get_object_or_404(Question, id=id) user = request.user if not user.is_authenticated(): raise AnonymousNotAllowedException(_('close questions')) if question.nis.closed: if not user.can_reopen_question(question): raise NotEnoughRepPointsException(_('reopen questions')) question.nstate.closed.cancel(user, ip=request.META['REMOTE_ADDR']) else: if not request.user.can_close_question(question): raise NotEnoughRepPointsException(_('close questions')) reason = request.POST.get('prompt', '').strip() if not len(reason): raise CommandException(_("Reason is empty")) CloseAction(node=question, user=user, extra=reason, ip=request.META['REMOTE_ADDR']).save() return RefreshPageCommand()
def convert_to_comment(request, id): user = request.user answer = get_object_or_404(Answer, id=id) question = answer.question # Check whether the user has the required permissions if not user.is_authenticated(): raise AnonymousNotAllowedException(_("convert answers to comments")) if not user.can_convert_to_comment(answer): raise NotEnoughRepPointsException(_("convert answers to comments")) if not request.POST: description = lambda a: _("Answer by %(uname)s: %(snippet)s...") % {'uname': smart_unicode(a.author.username), 'snippet': a.summary[:10]} nodes = [(question.id, _("Question"))] [nodes.append((a.id, description(a))) for a in question.answers.filter_state(deleted=False).exclude(id=answer.id)] return render_to_response('node/convert_to_comment.html', {'answer': answer, 'nodes': nodes}) try: new_parent = Node.objects.get(id=request.POST.get('under', None)) except: raise CommandException(_("That is an invalid post to put the comment under")) if not (new_parent == question or (new_parent.node_type == 'answer' and new_parent.parent == question)): raise CommandException(_("That is an invalid post to put the comment under")) AnswerToCommentAction(user=user, node=answer, ip=request.META['REMOTE_ADDR']).save(data=dict(new_parent=new_parent)) return RefreshPageCommand()
def convert_comment_to_answer(request, id): user = request.user comment = get_object_or_404(Comment, id=id) parent = comment.parent if not parent.question: question = parent else: question = parent.question if not user.is_authenticated(): raise AnonymousNotAllowedException(_("convert comments to answers")) if not user.can_convert_comment_to_answer(comment): raise NotEnoughRepPointsException(_("convert comments to answers")) CommentToAnswerAction(user=user, node=comment, ip=request.META['REMOTE_ADDR']).save(data=dict(question=question)) return RefreshPageCommand()
def convert_to_question(request, id): user = request.user answer = get_object_or_404(Answer, id=id) question = answer.question if not request.POST: description = lambda a: _("Answer by %(uname)s: %(snippet)s...") % { 'uname': a.author.username, 'snippet': a.summary[:10] } nodes = [(question.id, _("Question"))] [ nodes.append((a.id, description(a))) for a in question.answers.filter_state(deleted=False).exclude( id=answer.id) ] return render_to_response('node/convert_to_question.html', {'answer': answer}) if not user.is_authenticated(): raise AnonymousNotAllowedException(_("convert answers to questions")) if not user.can_convert_to_question(answer): raise NotEnoughRepPointsException(_("convert answers to questions")) try: title = request.POST.get('title', None) except: raise CommandException( _("You haven't specified the title of the new question")) AnswerToQuestionAction( user=user, node=answer, ip=request.META['REMOTE_ADDR']).save(data=dict(title=title)) return RefreshPageCommand()