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()
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)
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})