예제 #1
0
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))
예제 #2
0
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))
예제 #3
0
파일: views.py 프로젝트: matthiask/survey
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),
        })