def question_update(request,survey_slug,question_id, group_slug=None, group_slug_field=None, group_qs=None, template_name = 'survey/question_add.html', extra_context=None, *args, **kw): survey = get_object_or_404(Survey, slug=survey_slug) question = get_object_or_404(Question,id=question_id) if question not in survey.questions.iterator(): raise Http404() if request.method == "POST": request_post = request.POST.copy() question_form = QuestionForm(instance=question,data=request_post, files=request.FILES) if question_form.is_valid(): new_question = question_form.save(commit=False) new_question.survey = survey new_question.save() return HttpResponseRedirect(reverse("survey-edit",None,(), {"survey_slug":survey_slug})) else: question_form = QuestionForm(instance=question) return render_to_response(template_name, {'title': _("Update question"), 'question' : question, 'survey' : survey, 'model_string' : "Question", 'form' : question_form}, context_instance=RequestContext(request))
def question_add( request, survey_slug, group_slug=None, group_slug_field=None, group_qs=None, template_name="survey/question_add.html", extra_context=None, *args, **kw ): survey = get_object_or_404(Survey, slug=survey_slug) if request.method == "POST": request_post = request.POST.copy() question_form = QuestionForm(data=request_post, files=request.FILES) if question_form.is_valid(): new_question = question_form.save(commit=False) new_question.survey = survey new_question.save() return HttpResponseRedirect(reverse("survey-edit", None, (), {"survey_slug": survey_slug})) else: question_form = QuestionForm() return render_to_response( template_name, {"title": _("Add a question"), "form": question_form}, context_instance=RequestContext(request) )
def survey(request, survey_code, code, page=1): answer = get_object_or_404(SurveyAnswer.objects.select_related('survey'), survey__is_active=True, survey__code=survey_code, code=code) answer.update_status(answer.STARTED) pages = answer.survey.pages() # Only look at valid pages try: page = int(page) groups = pages[page - 1] except (IndexError, TypeError, ValueError): return redirect(answer) kwargs = { 'questions': Question.objects.filter(group__in=groups).order_by( 'group', 'ordering').select_related('group'), 'answer': answer, } if request.method == 'POST': form = QuestionForm(request.POST, **kwargs) if form.is_valid(): form.save() if 'finish' in request.POST: answer.update_status(answer.FINISHED) return redirect('survey.views.survey_end', survey_code=survey_code, code=code) elif 'prev' in request.POST: offset = -1 else: offset = 1 if 0 < page + offset <= len(pages): return redirect('survey.views.survey', survey_code=survey_code, code=code, page=page + offset) else: form = QuestionForm(**kwargs) return render(request, 'survey/form.html', { 'survey': answer.survey, 'answer': answer, 'form': form, 'page': page, 'page_count': len(pages), 'is_first_page': page == 1, 'is_last_page': page == len(pages), })
def question_add(request, survey_slug, group_slug=None, group_slug_field=None, group_qs=None, template_name='survey/question_add.html', extra_context=None, *args, **kw): survey = get_object_or_404(Survey, slug=survey_slug) if request.method == "POST": request_post = request.POST.copy() question_form = QuestionForm(data=request_post, files=request.FILES) if question_form.is_valid(): new_question = question_form.save(commit=False) new_question.survey = survey new_question.save() return HttpResponseRedirect( reverse("survey-edit", None, (), {"survey_slug": survey_slug})) else: question_form = QuestionForm() return render_to_response(template_name, { 'title': _("Add a question"), 'form': question_form }, context_instance=RequestContext(request))
def question_update(request, survey_slug, question_id, group_slug=None, group_slug_field=None, group_qs=None, template_name='survey/question_add.html', extra_context=None, *args, **kw): survey = get_object_or_404(Survey, slug=survey_slug) question = get_object_or_404(Question, id=question_id) if question not in survey.questions.iterator(): raise Http404() if request.method == "POST": request_post = request.POST.copy() question_form = QuestionForm(instance=question, data=request_post, files=request.FILES) if question_form.is_valid(): new_question = question_form.save(commit=False) new_question.survey = survey new_question.save() return HttpResponseRedirect( reverse("survey-edit", None, (), {"survey_slug": survey_slug})) else: question_form = QuestionForm(instance=question) return render_to_response(template_name, { 'title': _("Update question"), 'question': question, 'survey': survey, 'model_string': "Question", 'form': question_form }, context_instance=RequestContext(request))
def survey(request, survey_code, code, page=1): answer = get_object_or_404(SurveyAnswer.objects.select_related('survey'), survey__is_active=True, survey__code=survey_code, code=code) answer.update_status(answer.STARTED) pages = answer.survey.pages() # Only look at valid pages try: page = int(page) groups = pages[page - 1] except (IndexError, TypeError, ValueError): return redirect(answer) kwargs = { 'questions': Question.objects.filter(group__in=groups).order_by( 'group', 'ordering').select_related('group'), 'answer': answer, } if request.method == 'POST': form = QuestionForm(request.POST, **kwargs) if form.is_valid(): form.save() if 'finish' in request.POST: answer.update_status(answer.FINISHED) return redirect('survey_survey_end', survey_code=survey_code, code=code) elif 'prev' in request.POST: offset = -1 else: offset = 1 if 0 < page + offset <= len(pages): return redirect('survey_survey_page', survey_code=survey_code, code=code, page=page + offset) else: form = QuestionForm(**kwargs) return render( request, 'survey/form.html', { 'survey': answer.survey, 'answer': answer, 'form': form, 'page': page, 'page_count': len(pages), 'is_first_page': page == 1, 'is_last_page': page == len(pages), })