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())
def edit_question(request, id): """edit question view """ question = get_object_or_404(models.Question, id=id) latest_revision = question.get_latest_revision() revision_form = None try: request.user.assert_can_edit_question(question) if request.method == 'POST': if 'select_revision' in request.POST: #revert-type edit - user selected previous revision revision_form = forms.RevisionForm(question, latest_revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision rev_id = revision_form.cleaned_data['revision'] selected_revision = models.QuestionRevision.objects.get( question=question, revision=rev_id) form = forms.EditQuestionForm(question=question, user=request.user, revision=selected_revision) else: form = forms.EditQuestionForm(request.POST, question=question, user=request.user, revision=latest_revision) else: #new content edit # Always check modifications against the latest revision form = forms.EditQuestionForm( request.POST, question=question, revision=latest_revision, user=request.user, ) revision_form = forms.RevisionForm(question, latest_revision) if form.is_valid(): if form.has_changed(): if form.cleaned_data['reveal_identity']: question.remove_author_anonymity() is_anon_edit = form.cleaned_data['stay_anonymous'] is_wiki = form.cleaned_data.get('wiki', question.wiki) request.user.edit_question( question=question, title=form.cleaned_data['title'], body_text=form.cleaned_data['text'], revision_comment=form.cleaned_data['summary'], tags=form.cleaned_data['tags'], wiki=is_wiki, edit_anonymously=is_anon_edit, ) return HttpResponseRedirect(question.get_absolute_url()) else: #request type was "GET" revision_form = forms.RevisionForm(question, latest_revision) form = forms.EditQuestionForm(question=question, revision=latest_revision, user=request.user) data = { 'page_class': 'edit-question-page', 'active_tab': 'questions', 'question': question, 'revision_form': revision_form, 'form': form, } return render_into_skin('question_edit.html', data, request) except exceptions.PermissionDenied, e: request.user.message_set.create(message=unicode(e)) return HttpResponseRedirect(question.get_absolute_url())
def edit_answer(request, id): answer = get_object_or_404(models.Post, id=id) revision = answer.get_latest_revision() class_path = getattr(settings, 'ASKBOT_EDIT_ANSWER_FORM', None) if class_path: edit_answer_form_class = load_module(class_path) else: edit_answer_form_class = forms.EditAnswerForm 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 = edit_answer_form_class(answer, revision, user=request.user) else: form = edit_answer_form_class(answer, revision, request.POST, user=request.user) else: form = edit_answer_form_class(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) suppress_email = form.cleaned_data['suppress_email'] is_private = form.cleaned_data.get( 'post_privately', False) 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=is_private, suppress_email=suppress_email) signals.answer_edited.send(None, answer=answer, user=user, form_data=form.cleaned_data) return HttpResponseRedirect(answer.get_absolute_url()) else: revision_form = forms.RevisionForm(answer, revision) form = edit_answer_form_class(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, } extra_context = context.get_extra( 'ASKBOT_EDIT_ANSWER_PAGE_EXTRA_CONTEXT', request, data) data.update(extra_context) 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_question(request, id): """edit question view """ question = get_object_or_404(models.Post, id=id) revision = question.get_latest_revision() revision_form = None try: request.user.assert_can_edit_question(question) if request.method == 'POST': if request.POST['select_revision'] == 'true': #revert-type edit - user selected previous revision revision_form = forms.RevisionForm(question, revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision rev_id = revision_form.cleaned_data['revision'] revision = question.revisions.get(revision=rev_id) form = forms.EditQuestionForm(question=question, user=request.user, revision=revision) else: form = forms.EditQuestionForm(request.POST, question=question, user=question.user, revision=revision) else: #new content edit # Always check modifications against the latest revision form = forms.EditQuestionForm( request.POST, question=question, revision=revision, user=request.user, ) revision_form = forms.RevisionForm(question, revision) if form.is_valid(): if form.has_changed(): if form.cleaned_data['reveal_identity']: question.thread.remove_author_anonymity() if 'language' in form.cleaned_data: question.thread.language_code = form.cleaned_data[ 'language'] is_anon_edit = form.cleaned_data['stay_anonymous'] is_wiki = form.cleaned_data.get('wiki', question.wiki) post_privately = form.cleaned_data['post_privately'] suppress_email = form.cleaned_data['suppress_email'] user = form.get_post_user(request.user) user.edit_question( question=question, title=form.cleaned_data['title'], body_text=form.cleaned_data['text'], revision_comment=form.cleaned_data['summary'], tags=form.cleaned_data['tags'], wiki=is_wiki, edit_anonymously=is_anon_edit, is_private=post_privately, suppress_email=suppress_email) return HttpResponseRedirect(question.get_absolute_url()) else: #request type was "GET" revision_form = forms.RevisionForm(question, revision) initial = { 'language': question.thread.language_code, 'post_privately': question.is_private(), 'wiki': question.wiki } form = forms.EditQuestionForm(question=question, revision=revision, user=request.user, initial=initial) data = { 'page_class': 'edit-question-page', 'active_tab': 'questions', 'question': question, 'revision': revision, 'revision_form': revision_form, 'mandatory_tags': models.tag.get_mandatory_tags(), 'form': form, 'tag_names': question.thread.get_tag_names(), 'category_tree_data': askbot_settings.CATEGORY_TREE } data.update(context.get_for_tag_editor()) return render(request, 'question_edit.html', data) except exceptions.PermissionDenied, e: request.user.message_set.create(message=unicode(e)) return HttpResponseRedirect(question.get_absolute_url())
def edit_question(request, id): """edit question view """ question = get_object_or_404(models.Post, id=id) if askbot_settings.READ_ONLY_MODE_ENABLED: return redirect(question) try: revision = question.revisions.get(revision=0) except models.PostRevision.DoesNotExist: revision = question.get_latest_revision() revision_form = None try: request.user.assert_can_edit_question(question) if request.method == 'POST': if request.POST['select_revision'] == 'true': # revert-type edit - user selected previous revision revision_form = forms.RevisionForm(question, revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision rev_id = revision_form.cleaned_data['revision'] revision = question.revisions.get(revision=rev_id) form = forms.EditQuestionForm(question=question, user=request.user, revision=revision) else: form = forms.EditQuestionForm(request.POST, question=question, user=question.user, revision=revision) else: # new content edit # Always check modifications against the latest revision form = forms.EditQuestionForm(request.POST, question=question, revision=revision, user=request.user) revision_form = forms.RevisionForm(question, revision) if form.is_valid(): if form.has_changed(): if form.can_edit_anonymously( ) and form.cleaned_data['reveal_identity']: question.thread.remove_author_anonymity() question.is_anonymous = False is_wiki = form.cleaned_data.get('wiki', question.wiki) post_privately = form.cleaned_data['post_privately'] suppress_email = form.cleaned_data['suppress_email'] user = form.get_post_user(request.user) user.edit_question( question=question, title=form.cleaned_data['title'], body_text=form.cleaned_data['text'], revision_comment=form.cleaned_data['summary'], tags=form.cleaned_data['tags'], wiki=is_wiki, edit_anonymously=form. cleaned_data['edit_anonymously'], is_private=post_privately, suppress_email=suppress_email, ip_addr=request.META.get('REMOTE_ADDR')) if 'language' in form.cleaned_data: question.thread.set_language_code( form.cleaned_data['language']) return redirect(question) else: # request type was "GET" revision_form = forms.RevisionForm(question, revision) initial = { 'language': question.thread.language_code, 'post_privately': question.is_private(), 'wiki': question.wiki } form = forms.EditQuestionForm(question=question, revision=revision, user=request.user, initial=initial) data = { 'page_class': 'edit-question-page', 'active_tab': 'questions', 'question': question, 'revision': revision, 'revision_form': revision_form, 'mandatory_tags': models.tag.get_mandatory_tags(), 'form': form, 'tag_names': question.thread.get_tag_names(), 'category_tree_data': askbot_settings.CATEGORY_TREE } data.update(context.get_for_tag_editor()) return render(request, 'question_edit.jinja', data) except exceptions.PermissionDenied as e: traceback.print_exc() # request.user.message_set.create(message=force_text(e)) django_messages.info(request, force_text(e)) return redirect(question)