def fill_survey_v2(request, survey_uuid): try: promoter = request.user.promoterprofile except ObjectDoesNotExist: error_meta = { "method": "promoter.views.fill_survey_v2", } ErrorLog.objects.create_log(4, "Promoter Object Error", error_meta, request) raise SuspiciousOperation('Error Code: 4') try: survey = Survey.objects.get_survey(survey_uuid) except (Survey.DoesNotExist, ValueError): error_meta = { "method": "promoter.views.fill_survey_v2", "survey_uuid": survey_uuid } ErrorLog.objects.create_log(request=request, error_code=7, error_type="Survey Object Error", error_meta=error_meta) raise SuspiciousOperation('Error Code: 7') if promoter.check_survey_filled(survey): activity_meta = { "method": "promoter.views.fill_survey_v2", "survey_id": str(survey.id) } ActivityLog.objects.create_log(request, "Promoter Survey Filling Again", activity_meta) return HttpResponse("already Filled") else: total_questionset = request.session.get('total_questionset', None) question_set_number = request.session.get('question_set_number', None) if request.session.get('survey_id', None): survey_id = int(request.session['survey_id']) if survey_id != survey.id: request.session['survey_id'] = survey.id total_questionset = None question_set_number = None else: request.session['survey_id'] = survey.id if request.POST: questionset = survey.questionset_set.all().order_by('sort_id')[ question_set_number - 1] question_set_answer_form = QuestionSetAnswerForm( request.POST, questionset=questionset, promoter=promoter) if question_set_answer_form.is_valid(): questions = questionset.question_set.all().order_by('sort_id') for question in questions: answer_text = question_set_answer_form.cleaned_data.get( 'ques-' + str(question.id) + '-answer', None) try: answer_obj = Answer.objects.get(question_id=question, promoter_id=promoter) except Answer.DoesNotExist: answer_obj = None if answer_obj: answer_obj_parsed = json.loads(answer_obj.answer_text) if question.question_type == 'CH2' or question.question_type == 'CH6': comment = question_set_answer_form.cleaned_data.get( 'ques-' + str(question.id) + '-comment', None) if str(answer_obj_parsed['text']) != str( answer_text) or str( answer_obj_parsed['comment']) != str( comment): answer_dict = { "text": answer_text, "comment": comment } answer_obj.answer_text = json.dumps( answer_dict) answer_obj.save() else: if str(answer_obj_parsed['text']) != str( answer_text): answer_dict = {"text": answer_text} answer_obj.answer_text = json.dumps( answer_dict) answer_obj.save() else: if question.question_type == 'CH2' or question.question_type == 'CH6': comment = question_set_answer_form.cleaned_data.get( 'ques-' + str(question.id) + '-comment', None) answer_dict = { "text": answer_text, "comment": comment } else: answer_dict = {"text": answer_text} answer_str = json.dumps(answer_dict) answer_obj = Answer(question_id=question, promoter_id=promoter, answer_text=answer_str) answer_obj.save() if question_set_number == total_questionset: request.session.pop('total_questionset') request.session.pop('question_set_number') return survey_filled(request, survey, promoter) else: request.session['question_set_number'] += 1 activity_meta = { "method": "promoter.views.fill_survey_v2", "survey_id": str(survey.id), "total_questionset": str(total_questionset), "question_set_number": str(question_set_number) } ActivityLog.objects.create_log( request, "Promoter Survey Question Filled", activity_meta) return redirect('/pr/fill_survey/' + str(survey.uuid)) else: context = { "questionset": questionset, "question_set_answer_form": question_set_answer_form } return render(request, 'promoter/fill_survey_v2.html', context) else: if not total_questionset or not question_set_number: questionset = survey.questionset_set.all().order_by( 'sort_id').first() total_questionset = survey.questionset_set.all().count() question_set_number = 1 request.session['question_set_number'] = question_set_number request.session['total_questionset'] = total_questionset else: questionset = survey.questionset_set.all().order_by('sort_id')[ question_set_number - 1] question_set_answer_form = QuestionSetAnswerForm( questionset=questionset, promoter=promoter) context = { "questionset": questionset, "question_set_answer_form": question_set_answer_form } activity_meta = { "method": "promoter.views.fill_survey_v2", "survey_id": str(survey.id), "total_questionset": str(total_questionset), "question_set_number": str(question_set_number) } ActivityLog.objects.create_log(request, "Promoter Survey Display Question", activity_meta) return render(request, 'promoter/fill_survey_v2.html', context)
def save_survey(request): dto = Answer(survey_idx=request.POST["survey_idx"], num=request.POST["num"]) dto.save() return render_to_response("success.html")