def edit_answer(request, id): answer = get_object_or_404(Answer, id=id) if answer.deleted and not auth.can_view_deleted_post(request.user, answer): raise Http404 elif not auth.can_edit_post(request.user, answer): raise Http404 else: latest_revision = answer.get_latest_revision() if request.method == "POST": if 'select_revision' in request.POST: # user has changed revistion number revision_form = RevisionForm(answer, latest_revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision form = EditAnswerForm(answer, AnswerRevision.objects.get(answer=answer, revision=revision_form.cleaned_data['revision'])) else: form = EditAnswerForm(answer, latest_revision, request.POST) else: form = EditAnswerForm(answer, latest_revision, request.POST) if form.is_valid(): html = sanitize_html(markdowner.convert(form.cleaned_data['text'])) if form.has_changed(): edited_at = datetime.datetime.now() updated_fields = { 'last_edited_at': edited_at, 'last_edited_by': request.user, 'html': html, } Answer.objects.filter(id=answer.id).update(**updated_fields) revision = AnswerRevision( answer=answer, author=request.user, revised_at=edited_at, text=form.cleaned_data['text'] ) if form.cleaned_data['summary']: revision.summary = form.cleaned_data['summary'] else: revision.summary = 'No.%s Revision' % latest_revision.revision revision.save() answer.question.last_activity_at = edited_at answer.question.last_activity_by = request.user answer.question.save() return HttpResponseRedirect(answer.get_absolute_url()) else: revision_form = RevisionForm(answer, latest_revision) form = EditAnswerForm(answer, latest_revision) return render_to_response('answer_edit.html', { 'answer': answer, 'revision_form': revision_form, 'form': form, }, context_instance=RequestContext(request))
def edit_question(request, id):#edit or retag a question """view to edit question """ question = get_object_or_404(Question, id=id) if question.deleted and not auth.can_view_deleted_post(request.user, question): raise Http404 if auth.can_edit_post(request.user, question): return _edit_question(request, question) elif auth.can_retag_questions(request.user): return _retag_question(request, question) else: raise Http404
def edit_answer(request, id): answer = get_object_or_404(Answer, id=id) if answer.deleted and not auth.can_view_deleted_post(request.user, answer): raise Http404 elif not auth.can_edit_post(request.user, answer): raise Http404 else: latest_revision = answer.get_latest_revision() if request.method == "POST": if 'select_revision' in request.POST: # user has changed revistion number revision_form = RevisionForm(answer, latest_revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision form = EditAnswerForm(answer, AnswerRevision.objects.get(answer=answer, revision=revision_form.cleaned_data['revision'])) else: form = EditAnswerForm(answer, latest_revision, request.POST) else: form = EditAnswerForm(answer, latest_revision, request.POST) if form.is_valid(): if form.has_changed(): edited_at = datetime.datetime.now() answer.apply_edit( edited_at = edited_at, edited_by = request.user, text = form.cleaned_data['text'], comment = form.cleaned_data['summary'], wiki = False,#todo: fix this there is no "wiki" field on "edit answer" ) return HttpResponseRedirect(answer.get_absolute_url()) else: revision_form = RevisionForm(answer, latest_revision) form = EditAnswerForm(answer, latest_revision) return render_to_response('answer_edit.html', { 'answer': answer, 'revision_form': revision_form, 'form': form, }, context_instance=RequestContext(request))
def can_edit_post(user, post): return auth.can_edit_post(user, post)