Ejemplo n.º 1
0
def entry(request):
    if request.method == "POST":
        form = ResponseForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse("saved"))
    else:
        form = ResponseForm
    return locals()
Ejemplo n.º 2
0
    def create(self, request):
        if request.method == "POST":
            form = ResponseForm(request.POST)

            if form.is_valid():
                instance = form.save()
                instance.project = Project.objects.get(token=form.cleaned_data['token'])
                instance.save()
                return HttpResponse('response added with success!')
            else:
                return HttpResponse('', status=500)
Ejemplo n.º 3
0
def submit(request, survey_id):

    userid = responses.get_or_create_userid(request)
    user, created = User.objects.get_or_create(id=userid)
    survey = get_object_or_404(Assess, pk=survey_id)
    thanks = ""
    response_id = None

    if request.method == 'GET':
        try:
            response = Response.objects.get(responder=user, request=survey)
            RatingFormSet = modelformset_factory(Rating, form=RatingForm, max_num=1)
            ratings_formset = RatingFormSet(queryset=Rating.objects.filter(response=response))
            response_form = ResponseForm(instance=response)
            response_id = response.id
        except Response.DoesNotExist:
            initial_ratings = []
            questions = Question.objects.filter(template_id=survey.template.id)
            for question in questions:
                initial_ratings.append({'question': question.question, 'score': None})
            RatingFormSet = modelformset_factory(Rating, form=RatingForm, extra=len(questions))
            ratings_formset = RatingFormSet(initial=initial_ratings, queryset=Rating.objects.none())
            response_form = ResponseForm()
            response_id = None

        return render(request, 'form.html', {'rating_forms': ratings_formset,
                                             'response_form': response_form,
                                             'thanks': None,
                                             'response_id': response_id})

    if request.method == 'POST':
        RatingFormSet = modelformset_factory(Rating, form=RatingForm)
        ratings_formset = RatingFormSet(request.POST, error_class=ErrorBox)
        response_form = ResponseForm(request.POST, error_class=ErrorBox)
        response_id = request.POST.get('id', None)
        ratings = []
        if ratings_formset.is_valid() and response_form.is_valid():
            response = Response(request=survey, responder=user, word=response_form.clean_word(), id=response_id)
            response.save()
            response_id = response.id
            for rating in ratings_formset:
                if rating.cleaned_data['id']:
                    new_rating = Rating(
                        response=response,
                        question=rating.cleaned_data['question'],
                        score=rating.cleaned_data['score'],
                        id=rating.cleaned_data['id'].id
                    )
                else:
                    new_rating = Rating(
                        response=response,
                        question=rating.cleaned_data['question'],
                        score=rating.cleaned_data['score'],
                        id=None
                    )
                new_rating = new_rating.save()
                ratings.append(new_rating)
            RatingFormSet = modelformset_factory(Rating, form=RatingForm, max_num=1)
            ratings_formset = RatingFormSet(queryset=Rating.objects.filter(response=response))
            response_form = ResponseForm(instance=response)
            thanks = "Thank you for submitting your answers. You can " \
                     "amend them now or later if you need to."

        return render(request, 'form.html',
                  {'rating_forms': ratings_formset, 'response_form': response_form, 'thanks': thanks,
                   'response_id': response_id})