def retag_question(request, id): """retag question view """ question = get_object_or_404(models.Question, id = id) try: request.user.assert_can_retag_question(question) if request.method == 'POST': form = forms.RetagQuestionForm(question, request.POST) if form.is_valid(): if form.has_changed(): request.user.retag_question( question = question, tags = form.cleaned_data['tags'] ) if request.is_ajax(): response_data = { 'success': True, 'new_tags': question.tagnames } data = simplejson.dumps(response_data) return HttpResponse(data, mimetype="application/json") else: return HttpResponseRedirect(question.get_absolute_url()) elif request.is_ajax(): response_data = { 'message': unicode(form.errors['tags']), 'success': False } data = simplejson.dumps(response_data) return HttpResponse(data, mimetype="application/json") else: form = forms.RetagQuestionForm(question) data = { 'active_tab': 'questions', 'question': question, 'form' : form, 'tags' : _get_tags_cache_json(), } return render_into_skin('question_retag.html', data, request) except exceptions.PermissionDenied, e: if request.is_ajax(): response_data = { 'message': unicode(e), 'success': False } data = simplejson.dumps(response_data) return HttpResponse(data, mimetype="application/json") else: 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.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 has changed revistion number revision_form = forms.RevisionForm(question, latest_revision, request.POST) if revision_form.is_valid(): # Replace with those from the selected revision form = forms.EditQuestionForm(question, models.QuestionRevision.objects.get(question=question, revision=revision_form.cleaned_data['revision'])) else: form = forms.EditQuestionForm(question, latest_revision, request.POST) else:#new content edit # Always check modifications against the latest revision form = forms.EditQuestionForm(question, latest_revision, request.POST) if form.is_valid(): if form.has_changed(): 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 = form.cleaned_data.get('wiki', question.wiki) ) return HttpResponseRedirect(question.get_absolute_url()) else: revision_form = forms.RevisionForm(question, latest_revision) form = forms.EditQuestionForm(question, latest_revision) data = { 'active_tab': 'questions', 'question': question, 'revision_form': revision_form, 'form' : form, 'tags' : _get_tags_cache_json() } context = RequestContext(request, data) template = ENV.get_template('question_edit.html') return HttpResponse(template.render(context)) except exceptions.PermissionDenied, e: request.user.message_set.create(message = unicode(e)) return HttpResponseRedirect(question.get_absolute_url())
def retag_question(request, id): """retag question view """ question = get_object_or_404(models.Question, id=id) try: request.user.assert_can_retag_question(question) if request.method == 'POST': form = forms.RetagQuestionForm(question, request.POST) if form.is_valid(): if form.has_changed(): request.user.retag_question(question=question, tags=form.cleaned_data['tags']) if request.is_ajax(): response_data = { 'success': True, 'new_tags': question.tagnames } data = simplejson.dumps(response_data) return HttpResponse(data, mimetype="application/json") else: return HttpResponseRedirect(question.get_absolute_url()) elif request.is_ajax(): response_data = { 'message': unicode(form.errors['tags']), 'success': False } data = simplejson.dumps(response_data) return HttpResponse(data, mimetype="application/json") else: form = forms.RetagQuestionForm(question) data = { 'active_tab': 'questions', 'question': question, 'form': form, 'tags': _get_tags_cache_json(), } return render_into_skin('question_retag.html', data, request) except exceptions.PermissionDenied, e: if request.is_ajax(): response_data = {'message': unicode(e), 'success': False} data = simplejson.dumps(response_data) return HttpResponse(data, mimetype="application/json") else: request.user.message_set.create(message=unicode(e)) return HttpResponseRedirect(question.get_absolute_url())
return HttpResponseRedirect(reverse('user_signin_new_question')) else: #this branch is for the initial load of ask form form = forms.AskForm() if 'title' in request.GET: #normally this title is inherited from search query #but it is possible to ask with a parameter title in the url query form.initial['title'] = request.GET['title'] else: #attempt to extract title from previous search query search_state = request.session.get('search_state',None) if search_state: query = search_state.query form.initial['title'] = query tags = _get_tags_cache_json() data = { 'active_tab': 'ask', 'form' : form, 'tags' : tags, 'email_validation_faq_url':reverse('faq') + '#validate', } return render_into_skin('ask.html', data, request) @login_required def retag_question(request, id): """retag question view """ question = get_object_or_404(models.Question, id = id) try:
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, ) 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, 'tags': _get_tags_cache_json() } 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())
reverse('user_signin_new_question')) else: #this branch is for the initial load of ask form form = forms.AskForm() if 'title' in request.GET: #normally this title is inherited from search query #but it is possible to ask with a parameter title in the url query form.initial['title'] = request.GET['title'] else: #attempt to extract title from previous search query search_state = request.session.get('search_state', None) if search_state: query = search_state.query form.initial['title'] = query tags = _get_tags_cache_json() data = { 'active_tab': 'ask', 'page_class': 'ask-page', 'form': form, 'tags': tags, 'email_validation_faq_url': reverse('faq') + '#validate', } return render_into_skin('ask.html', data, request) @login_required def retag_question(request, id): """retag question view """ question = get_object_or_404(models.Question, id=id)
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, ) 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, 'tags' : _get_tags_cache_json() } 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())