def edit_answer(request, id): answer = get_object_or_404(models.Post, id=id) revision = answer.get_latest_revision() try: request.user.assert_can_edit_answer(answer) if request.method == "POST": if request.POST['select_revision'] == 'true': # user has changed revistion number revision_form = forms.RevisionForm(answer, revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision rev = revision_form.cleaned_data['revision'] revision = answer.revisions.get(revision=rev) form = forms.EditAnswerForm(answer, revision, user=request.user) else: form = forms.EditAnswerForm(answer, revision, request.POST, user=request.user) else: form = forms.EditAnswerForm(answer, revision, request.POST, user=request.user) revision_form = forms.RevisionForm(answer, revision) if form.is_valid(): if form.has_changed(): user = form.get_post_user(request.user) user.edit_answer( answer=answer, body_text=form.cleaned_data['text'], revision_comment=form.cleaned_data['summary'], wiki=form.cleaned_data.get('wiki', answer.wiki), is_private=form.cleaned_data.get( 'post_privately', False) #todo: add wiki field to form ) return HttpResponseRedirect(answer.get_absolute_url()) else: revision_form = forms.RevisionForm(answer, revision) form = forms.EditAnswerForm(answer, revision, user=request.user) if request.user.can_make_group_private_posts(): form.initial['post_privately'] = answer.is_private() data = { 'page_class': 'edit-answer-page', 'active_tab': 'questions', 'answer': answer, 'revision': revision, 'revision_form': revision_form, 'form': form, } return render(request, 'answer_edit.html', data) except exceptions.PermissionDenied, e: request.user.message_set.create(message=unicode(e)) return HttpResponseRedirect(answer.get_absolute_url())
def edit_answer(request, id): answer = get_object_or_404(models.Answer, id=id) try: request.user.assert_can_edit_answer(answer) latest_revision = answer.get_latest_revision() if request.method == "POST": if 'select_revision' in request.POST: # user has changed revistion number revision_form = forms.RevisionForm( answer, latest_revision, request.POST ) if revision_form.is_valid(): # Replace with those from the selected revision rev = revision_form.cleaned_data['revision'] selected_revision = models.AnswerRevision.objects.get( answer = answer, revision = rev ) form = forms.EditAnswerForm(answer, selected_revision) else: form = forms.EditAnswerForm( answer, latest_revision, request.POST ) else: form = forms.EditAnswerForm(answer, latest_revision, request.POST) revision_form = forms.RevisionForm(answer, latest_revision) if form.is_valid(): if form.has_changed(): request.user.edit_answer( answer = answer, body_text = form.cleaned_data['text'], revision_comment = form.cleaned_data['summary'], wiki = form.cleaned_data.get('wiki', answer.wiki), #todo: add wiki field to form ) return HttpResponseRedirect(answer.get_absolute_url()) else: revision_form = forms.RevisionForm(answer, latest_revision) form = forms.EditAnswerForm(answer, latest_revision) data = { 'active_tab': 'questions', 'answer': answer, 'revision_form': revision_form, 'form': form, } return render_into_skin('answer_edit.html', data, request) except exceptions.PermissionDenied, e: request.user.message_set.create(message = unicode(e)) return HttpResponseRedirect(answer.get_absolute_url())