Example #1
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))
Example #2
0
File: views.py Project: zouf/as2
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)
    )
Example #3
0
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),
        })
Example #4
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))
Example #5
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))
Example #6
0
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),
        })