From 5ad2caad2f00846462d3bae0d5a4babb8ea3fdf5 Mon Sep 17 00:00:00 2001 From: ariannedee Date: Thu, 30 Jul 2020 14:47:55 -0700 Subject: [PATCH] Update backend to return errors for the current page (e.g. name_spouse_error=True) --- edivorce/apps/core/utils/user_response.py | 21 +++++++++++++++++---- edivorce/apps/core/views/main.py | 8 +++++--- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/edivorce/apps/core/utils/user_response.py b/edivorce/apps/core/utils/user_response.py index cb694348..d14af105 100644 --- a/edivorce/apps/core/utils/user_response.py +++ b/edivorce/apps/core/utils/user_response.py @@ -4,16 +4,29 @@ from edivorce.apps.core.utils.step_completeness import evaluate_numeric_conditio from collections import OrderedDict -def get_responses_from_db(bceid_user): - """ Get UserResponses from the database for a user. """ +def get_responses_from_db(bceid_user, step_errors=None): + """ Get UserResponses from the database for a user.""" married, married_questions, responses = __get_data(bceid_user) responses_dict = {} for answer in responses: if not married and answer.question_id in married_questions: responses_dict[answer.question.key] = '' - else: + elif answer.value.strip('[').strip(']'): responses_dict[answer.question.key] = answer.value - + if step_errors: + step_questions = question_step_mapping.get(step_errors, []) + questions = Question.objects.filter(key__in=step_questions) + for question in questions: + if responses_dict.get(question.key): + error = False + elif question.required == 'Required': + error = True + elif question.required == 'Conditional': + conditional_response = UserResponse.objects.filter(question=question.conditional_target).first() + error = conditional_response and conditional_response.value == question.reveal_response + else: + error = False + responses_dict[f'{question.key}_error'] = error return responses_dict diff --git a/edivorce/apps/core/views/main.py b/edivorce/apps/core/views/main.py index d98d5361..4a3cfcfc 100644 --- a/edivorce/apps/core/views/main.py +++ b/edivorce/apps/core/views/main.py @@ -40,7 +40,7 @@ def prequalification(request, step): if not request.user.is_authenticated: responses_dict = get_responses_from_session(request) else: - responses_dict = get_responses_from_db(request.user) + responses_dict = get_responses_from_db(request.user, 'prequalification') responses_dict['active_page'] = 'prequalification' responses_by_step = get_responses_from_db_grouped_by_steps(request.user) responses_dict['step_status'] = get_step_status(responses_by_step) @@ -191,8 +191,10 @@ def question(request, step, sub_step=None): if step == "review": responses_dict = responses_dict_by_step + derived = get_derived_data(get_responses_from_db(request.user)) else: - responses_dict = get_responses_from_db(request.user) + responses_dict = get_responses_from_db(request.user, step) + derived = get_derived_data(responses_dict) # Add step status dictionary responses_dict['step_status'] = get_step_status(responses_dict_by_step) @@ -203,7 +205,7 @@ def question(request, step, sub_step=None): responses_dict['registries'] = sorted(list_of_registries) responses_dict['sub_step'] = sub_step - responses_dict['derived'] = get_derived_data(get_responses_from_db(request.user)) + responses_dict['derived'] = derived return render(request, template_name=template, context=responses_dict)