def validate_update_row_params(rqst_body, validated_params, rqst_errors): if "question" in rqst_body: validated_params[ "rqst_specific_concern_question"] = clean_string_value_from_dict_object( rqst_body, "root", "question", rqst_errors) if "research_weight" in rqst_body: rqst_specific_concern_research_weight = clean_int_value_from_dict_object( rqst_body, "root", "research_weight", rqst_errors, no_key_allowed=True) if not rqst_specific_concern_research_weight: rqst_specific_concern_research_weight = ConsumerSpecificConcern.RESEARCH_WEIGHT_DEFAULT elif rqst_specific_concern_research_weight > 100: rqst_errors.append( "Value for 'research_weight' must be less than 100. Given value is: {}" .format(rqst_specific_concern_research_weight)) validated_params[ "rqst_specific_concern_research_weight"] = rqst_specific_concern_research_weight if "add_related_general_concerns" in rqst_body: rqst_add_related_general_concerns_names = clean_list_value_from_dict_object( rqst_body, "root", "add_related_general_concerns", rqst_errors, ) add_related_general_concerns_objects = [] if rqst_add_related_general_concerns_names: validate_related_gen_concern_names( rqst_add_related_general_concerns_names, rqst_errors) if not rqst_errors: add_related_general_concerns_objects = ConsumerGeneralConcern.retrieve_related_gen_concern_rows_by_name( rqst_add_related_general_concerns_names, rqst_errors) validated_params[ "add_related_general_concerns_objects"] = add_related_general_concerns_objects elif "remove_related_general_concerns" in rqst_body: rqst_remove_related_general_concerns_names = clean_list_value_from_dict_object( rqst_body, "root", "remove_related_general_concerns", rqst_errors, ) remove_related_general_concerns_objects = [] if rqst_remove_related_general_concerns_names: validate_related_gen_concern_names( rqst_remove_related_general_concerns_names, rqst_errors) if not rqst_errors: remove_related_general_concerns_objects = ConsumerGeneralConcern.retrieve_related_gen_concern_rows_by_name( rqst_remove_related_general_concerns_names, rqst_errors) validated_params[ "remove_related_general_concerns_objects"] = remove_related_general_concerns_objects
def validate_create_resume_row_params(resume_row_params, rqst_errors): validated_resume_row_params = { 'profile_description': clean_string_value_from_dict_object( resume_row_params, "create_resume_row", "profile_description", rqst_errors, empty_string_allowed=True, none_allowed=True ), } if "create_education_rows" in resume_row_params: education_row_params = clean_list_value_from_dict_object( resume_row_params, "create_resume_row", "create_education_rows", rqst_errors, empty_list_allowed=True ) validated_education_row_params = [] if education_row_params: for education_row_index, education_row_dict in enumerate(education_row_params): validated_education_row_dict = validate_create_education_row_params( education_row_dict, education_row_index, rqst_errors ) validated_education_row_params.append(validated_education_row_dict) validated_resume_row_params['create_education_rows'] = validated_education_row_params if "create_job_rows" in resume_row_params: job_row_params = clean_list_value_from_dict_object( resume_row_params, "create_resume_row", "create_job_rows", rqst_errors, empty_list_allowed=True ) validated_job_row_params = [] if job_row_params: for job_row_index, job_row_dict in enumerate(job_row_params): validated_job_row_dict = validate_create_job_row_params( job_row_dict, job_row_index, rqst_errors ) validated_job_row_params.append(validated_job_row_dict) validated_resume_row_params['create_job_rows'] = validated_job_row_params return validated_resume_row_params
def validate_update_row_params(rqst_body, validated_params, rqst_errors): if "name" in rqst_body: rqst_provider_location_name = clean_string_value_from_dict_object( rqst_body, "root", "name", rqst_errors) validated_params["name"] = rqst_provider_location_name if 'state_province' in rqst_body: state_province = clean_string_value_from_dict_object( rqst_body, "root", "state_province", rqst_errors, none_allowed=True, empty_string_allowed=True) if not state_province: state_province = 'not available' validated_params["state_province"] = state_province if "provider_network_id" in rqst_body: rqst_provider_network_id = clean_int_value_from_dict_object( rqst_body, "root", "provider_network_id", rqst_errors, none_allowed=True) validated_params["provider_network_id"] = rqst_provider_network_id if "add_accepted_plans" in rqst_body: rqst_add_accepted_plans_ids = clean_list_value_from_dict_object( rqst_body, "root", "add_accepted_plans", rqst_errors, ) if rqst_add_accepted_plans_ids: add_accepted_plan_objects = validate_accepted_plans_params( rqst_add_accepted_plans_ids, rqst_errors) validated_params[ "add_accepted_plans_objects"] = add_accepted_plan_objects elif "remove_accepted_plans" in rqst_body: rqst_remove_accepted_plans_ids = clean_list_value_from_dict_object( rqst_body, "root", "remove_accepted_plans", rqst_errors, ) if rqst_remove_accepted_plans_ids: remove_accepted_plan_objects = validate_accepted_plans_params( rqst_remove_accepted_plans_ids, rqst_errors) validated_params[ "remove_accepted_plans_objects"] = remove_accepted_plan_objects
def available_nav_appointments_logic(self, rqst_body, response_raw_data, rqst_errors): response_raw_data["Data"] = {} response_raw_data["Data"]["Next Available Appointments"] = [] response_raw_data["Data"]["Preferred Appointments"] = [] rqst_preferred_times = clean_list_value_from_dict_object( rqst_body, "root", "Preferred Times", rqst_errors, empty_list_allowed=True) valid_rqst_preferred_times_timestamps = [] for preferred_time_iso_string in rqst_preferred_times: if isinstance(preferred_time_iso_string, str): try: valid_rqst_preferred_times_timestamps.append( dateutil.parser.parse(preferred_time_iso_string)) except ValueError: pass if valid_rqst_preferred_times_timestamps: response_raw_data["Data"][ "Preferred Appointments"] = get_preferred_nav_apts( rqst_preferred_times, valid_rqst_preferred_times_timestamps, rqst_errors) else: response_raw_data["Data"][ "Next Available Appointments"] = get_next_available_nav_apts( rqst_errors)
def validate_update_row_params(rqst_body, validated_params, rqst_errors): if "name" in rqst_body: rqst_name = clean_string_value_from_dict_object( rqst_body, "root", "name", rqst_errors, empty_string_allowed=True) validated_params["name"] = rqst_name if 'add_steps' in rqst_body: add_cm_steps = clean_list_value_from_dict_object( rqst_body, "root", "add_steps", rqst_errors, empty_list_allowed=True) validated_cm_steps = [] for step_id in add_cm_steps: if not isinstance(step_id, int): rqst_errors.append( 'Error: An step_id in \'add_steps\' is not an integer.') continue validated_cm_steps.append(step_id) validated_params['add_steps'] = validated_cm_steps elif 'remove_steps' in rqst_body: remove_cm_steps = clean_list_value_from_dict_object( rqst_body, "root", "remove_steps", rqst_errors) validated_cm_steps = [] for step_id in remove_cm_steps: if not isinstance(step_id, int): rqst_errors.append( 'Error: An step_id in \'remove_steps\' is not an integer.') continue validated_cm_steps.append(step_id) validated_params['remove_steps'] = validated_cm_steps
def validate_add_staff_params(rqst_body, validated_params, rqst_errors): rqst_usr_email = clean_string_value_from_dict_object( rqst_body, "root", "email", rqst_errors) if rqst_usr_email and not rqst_errors: try: validate_email(rqst_usr_email) except forms.ValidationError: rqst_errors.append( "{!s} must be a valid email address".format(rqst_usr_email)) rqst_usr_f_name = clean_string_value_from_dict_object( rqst_body, "root", "first_name", rqst_errors) rqst_usr_l_name = clean_string_value_from_dict_object( rqst_body, "root", "last_name", rqst_errors) rqst_county = clean_string_value_from_dict_object(rqst_body, "root", "county", rqst_errors) rqst_usr_type = clean_string_value_from_dict_object( rqst_body, "root", "type", rqst_errors) rqst_base_locations = clean_list_value_from_dict_object( rqst_body, "root", "base_locations", rqst_errors, empty_list_allowed=True) base_location_objects = [] location_errors = [] if rqst_base_locations: rqst_base_locations = list(set(rqst_base_locations)) for base_location_name in rqst_base_locations: try: base_location_object = NavMetricsLocation.objects.get( name=base_location_name) base_location_objects.append(base_location_object) except NavMetricsLocation.DoesNotExist: location_errors.append( "No Nav Hub Location Database entry found for name: {!s}". format(base_location_name)) for location_error in location_errors: rqst_errors.append(location_error) validated_params["rqst_usr_email"] = rqst_usr_email validated_params["rqst_usr_f_name"] = rqst_usr_f_name validated_params["rqst_usr_l_name"] = rqst_usr_l_name validated_params["rqst_county"] = rqst_county validated_params["rqst_usr_type"] = rqst_usr_type validated_params["base_location_objects"] = base_location_objects
def validate_create_row_params(rqst_body, validated_params, rqst_errors): rqst_provider_location_name = clean_string_value_from_dict_object( rqst_body, "root", "name", rqst_errors) validated_params["name"] = rqst_provider_location_name state_province = clean_string_value_from_dict_object( rqst_body, "root", "state_province", rqst_errors, none_allowed=True, empty_string_allowed=True) if not state_province: state_province = 'not available' validated_params["state_province"] = state_province rqst_provider_network_id = clean_int_value_from_dict_object( rqst_body, "root", "provider_network_id", rqst_errors, none_allowed=True) validated_params["provider_network_id"] = rqst_provider_network_id rqst_add_accepted_plans_ids = clean_list_value_from_dict_object( rqst_body, "root", "add_accepted_plans", rqst_errors, empty_list_allowed=True) add_accepted_plan_objects = [] if rqst_add_accepted_plans_ids: add_accepted_plan_objects = validate_accepted_plans_params( rqst_add_accepted_plans_ids, rqst_errors) validated_params["add_accepted_plans_objects"] = add_accepted_plan_objects
def validate_navigator_nav_sign_up_fields(rqst_body, validated_params, rqst_errors): if 'add_healthcare_locations_worked' in rqst_body: add_healthcare_locations_worked = clean_list_value_from_dict_object( rqst_body, "root", "add_healthcare_locations_worked", rqst_errors, empty_list_allowed=True) validated_location_info = [] for location_dict in add_healthcare_locations_worked: if not isinstance(location_dict, dict): rqst_errors.append( 'Error: A location object in \'add_healthcare_locations_worked\' is not a object.' ) else: location_info = { "name": clean_string_value_from_dict_object( location_dict, "add_location_object", 'name', rqst_errors), "state_province": clean_string_value_from_dict_object(location_dict, "add_location_object", 'state_province', rqst_errors, none_allowed=True) } if not location_info['state_province']: location_info['state_province'] = 'not available' validated_location_info.append(location_info) validated_params[ 'add_healthcare_locations_worked'] = validated_location_info if 'add_healthcare_service_expertises' in rqst_body: add_healthcare_service_expertises = clean_list_value_from_dict_object( rqst_body, "root", "add_healthcare_service_expertises", rqst_errors, empty_list_allowed=True) validated_service_expertise_info = [] for service_expertise in add_healthcare_service_expertises: if not isinstance(service_expertise, str): rqst_errors.append( 'Error: A service_expertise in \'add_healthcare_service_expertises\' is not a string.' ) continue validated_service_expertise_info.append(service_expertise) validated_params[ 'add_healthcare_service_expertises'] = validated_service_expertise_info if 'add_insurance_carrier_specialties' in rqst_body: add_insurance_carrier_specialties = clean_list_value_from_dict_object( rqst_body, "root", "add_insurance_carrier_specialties", rqst_errors, empty_list_allowed=True) validated_insurance_carrier_info = [] for carrier_dict in add_insurance_carrier_specialties: if not isinstance(carrier_dict, dict): rqst_errors.append( 'Error: An insurance_carrier object in \'add_insurance_carrier_specialties\' is not a object.' ) else: validated_carrier_info = { "name": clean_string_value_from_dict_object( carrier_dict, "insurance_carrier_object", 'name', rqst_errors, empty_string_allowed=True), "state_province": clean_string_value_from_dict_object( carrier_dict, "insurance_carrier_object", 'state_province', rqst_errors, empty_string_allowed=True) } if not validated_carrier_info['state_province']: validated_carrier_info['state_province'] = 'not available' validated_insurance_carrier_info.append(validated_carrier_info) validated_params[ 'add_insurance_carrier_specialties'] = validated_insurance_carrier_info if "address_line_1" in rqst_body: address_line_1 = clean_string_value_from_dict_object( rqst_body, "root", "address_line_1", rqst_errors, empty_string_allowed=True) validated_params["address_line_1"] = address_line_1 if "address_line_2" in rqst_body: address_line_2 = clean_string_value_from_dict_object( rqst_body, "root", "address_line_2", rqst_errors, empty_string_allowed=True) if address_line_2 is None: address_line_2 = '' validated_params["address_line_2"] = address_line_2 if "city" in rqst_body: city = clean_string_value_from_dict_object(rqst_body, "root", "city", rqst_errors, empty_string_allowed=True) validated_params["city"] = city if "state_province" in rqst_body: state_province = clean_string_value_from_dict_object( rqst_body, "root", "state_province", rqst_errors, empty_string_allowed=True) validated_params["state_province"] = state_province if "zipcode" in rqst_body: zipcode = clean_string_value_from_dict_object( rqst_body, "root", "zipcode", rqst_errors, empty_string_allowed=True) validated_params["zipcode"] = zipcode if "phone" in rqst_body: phone = clean_string_value_from_dict_object(rqst_body, "root", "phone", rqst_errors, none_allowed=True) validated_params["phone"] = phone if "reported_region" in rqst_body: reported_region = clean_string_value_from_dict_object( rqst_body, "root", "reported_region", rqst_errors, none_allowed=True) validated_params["reported_region"] = reported_region if "video_link" in rqst_body: video_link = clean_string_value_from_dict_object(rqst_body, "root", "video_link", rqst_errors, none_allowed=True) if video_link: validate = URLValidator() try: validate(video_link) except ValidationError: rqst_errors.append( "'video_link' is not a valid url. value is: {}".format( video_link)) validated_params["video_link"] = video_link if "navigator_organization" in rqst_body: navigator_organization = clean_string_value_from_dict_object( rqst_body, "root", "navigator_organization", rqst_errors, none_allowed=True) validated_params["navigator_organization"] = navigator_organization validate_nav_sign_up_navigator_resume_params(rqst_body, validated_params, rqst_errors)
def validate_nav_sign_up_create_params(rqst_body, validated_params, rqst_errors): email = clean_string_value_from_dict_object(rqst_body, "root", "email", rqst_errors) if email and not rqst_errors: try: validate_email(email) except forms.ValidationError: rqst_errors.append( "{!s} must be a valid email address".format(email)) validated_params["email"] = email if 'mpn' in rqst_body: mpn = clean_string_value_from_dict_object(rqst_body, "root", "mpn", rqst_errors, empty_string_allowed=True, none_allowed=True) if mpn is None: mpn = '' validated_params["mpn"] = mpn else: validated_params["mpn"] = '' first_name = clean_string_value_from_dict_object(rqst_body, "root", "first_name", rqst_errors) validated_params["first_name"] = first_name last_name = clean_string_value_from_dict_object(rqst_body, "root", "last_name", rqst_errors) validated_params["last_name"] = last_name if "county" in rqst_body: county = clean_string_value_from_dict_object(rqst_body, "root", "county", rqst_errors) validated_params["county"] = county else: validated_params["county"] = '' if "type" in rqst_body: rqst_type = clean_string_value_from_dict_object( rqst_body, "root", "type", rqst_errors) validated_params["type"] = rqst_type else: validated_params["type"] = '' if 'add_base_locations' in rqst_body: add_base_location_names = clean_list_value_from_dict_object( rqst_body, "root", "add_base_locations", rqst_errors, empty_list_allowed=True) validated_base_location_names = [] for base_location_name in add_base_location_names: if not isinstance(base_location_name, str): rqst_errors.append( 'Error: A base_location_name in \'add_base_locations\' is not a string.' ) continue validated_base_location_names.append(base_location_name) validated_params['add_base_locations'] = validated_base_location_names validate_navigator_nav_sign_up_fields(rqst_body, validated_params, rqst_errors)
def validate_create_or_update_row_params(rqst_body, validated_params, rqst_errors): consumer_metrics = clean_dict_value_from_dict_object( rqst_body, "root", "Consumer Metrics", rqst_errors) if not consumer_metrics: consumer_metrics = {} rqst_no_cps_consumers = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_cps_consumers", rqst_errors, no_key_allowed=True) if rqst_no_cps_consumers is None: rqst_no_cps_consumers = 0 rqst_metrics_location = clean_string_value_from_dict_object( consumer_metrics, "Consumer Metrics", "Location", rqst_errors) location_instance = None try: location_instance = NavMetricsLocation.objects.get( name=rqst_metrics_location) except NavMetricsLocation.DoesNotExist: rqst_errors.append( "Location instance does not exist for given location name: {!s}.". format(rqst_metrics_location)) except NavMetricsLocation.MultipleObjectsReturned: rqst_errors.append( "Multiple location instances exist for given location name: {!s}". format(rqst_metrics_location)) metrics_date_dict = clean_dict_value_from_dict_object( consumer_metrics, "Consumer Metrics", "Metrics Date", rqst_errors) metrics_date = None if metrics_date_dict is not None: month = clean_int_value_from_dict_object(metrics_date_dict, "Metrics Date", "Month", rqst_errors) if month: if month < 1 or month > 12: rqst_errors.append("Month must be between 1 and 12 inclusive") day = clean_int_value_from_dict_object(metrics_date_dict, "Metrics Date", "Day", rqst_errors) if day: if day < 1 or day > 31: rqst_errors.append("Day must be between 1 and 31 inclusive") year = clean_int_value_from_dict_object(metrics_date_dict, "Metrics Date", "Year", rqst_errors) if year: if year < 1 or year > 9999: rqst_errors.append("Year must be between 1 and 9999 inclusive") if not rqst_errors: metrics_date = datetime.date(year, month, day) rqst_plan_stats = clean_list_value_from_dict_object( consumer_metrics, "Consumer Metrics", "Plan Stats", rqst_errors, empty_list_allowed=True) unsaved_plan_stat_objs = [] if rqst_plan_stats: for rqst_plan_stat_dict in rqst_plan_stats: planstatobject = PlanStat() planstatobject.plan_name = clean_string_value_from_dict_object( rqst_plan_stat_dict, "Plans Dict", "Issuer Name", rqst_errors) planstatobject.premium_type = clean_string_value_from_dict_object( rqst_plan_stat_dict, "Plans Dict", "Premium Type", rqst_errors) planstatobject.metal_level = clean_string_value_from_dict_object( rqst_plan_stat_dict, "Plans Dict", "Metal Level", rqst_errors) planstatobject.enrollments = clean_int_value_from_dict_object( rqst_plan_stat_dict, "Plans Dict", "Enrollments", rqst_errors) plan_name_valid = planstatobject.check_plan_choices() premium_type_valid = planstatobject.check_premium_choices() metal_level_valid = planstatobject.check_metal_choices() if not plan_name_valid: rqst_errors.append( "Plan: {!s} is not part of member plans".format( planstatobject.plan_name)) if not premium_type_valid: rqst_errors.append( "Premium Type: {!s} is not a valid premium type".format( planstatobject.premium_type)) if not metal_level_valid: rqst_errors.append( "Metal: {!s} is not a valid metal level".format( planstatobject.metal_level)) if plan_name_valid and premium_type_valid and metal_level_valid: unsaved_plan_stat_objs.append(planstatobject) validated_params["rqst_usr_email"] = clean_string_value_from_dict_object( rqst_body, "root", "Email", rqst_errors) validated_params[ "rqst_no_general_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_general_assis", rqst_errors) validated_params[ "rqst_no_plan_usage_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_plan_usage_assis", rqst_errors) validated_params[ "rqst_no_locating_provider_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_locating_provider_assis", rqst_errors) validated_params[ "rqst_no_billing_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_billing_assis", rqst_errors) validated_params[ "rqst_no_enroll_apps_started"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_enroll_apps_started", rqst_errors) validated_params["rqst_no_enroll_qhp"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_enroll_qhp", rqst_errors) validated_params[ "rqst_no_enroll_abe_chip"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_enroll_abe_chip", rqst_errors) validated_params["rqst_no_enroll_shop"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_enroll_shop", rqst_errors) validated_params[ "rqst_no_referrals_agents_brokers"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_referrals_agents_brokers", rqst_errors) validated_params[ "rqst_no_referrals_ship_medicare"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_referrals_ship_medicare", rqst_errors) validated_params[ "rqst_no_referrals_other_assis_programs"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_referrals_other_assis_programs", rqst_errors) validated_params[ "rqst_no_referrals_issuers"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_referrals_issuers", rqst_errors) validated_params[ "rqst_no_referrals_doi"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_referrals_doi", rqst_errors) validated_params[ "rqst_no_mplace_tax_form_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_mplace_tax_form_assis", rqst_errors) validated_params[ "rqst_no_mplace_exempt_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_mplace_exempt_assis", rqst_errors) validated_params[ "rqst_no_qhp_abe_appeals"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_qhp_abe_appeals", rqst_errors) validated_params[ "rqst_no_data_matching_mplace_issues"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_data_matching_mplace_issues", rqst_errors) validated_params[ "rqst_no_sep_eligible"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_sep_eligible", rqst_errors) validated_params[ "rqst_no_employ_spons_cov_issues"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_employ_spons_cov_issues", rqst_errors) validated_params[ "rqst_no_aptc_csr_assis"] = clean_int_value_from_dict_object( consumer_metrics, "Consumer Metrics", "no_aptc_csr_assis", rqst_errors) validated_params[ "rqst_cmplx_cases_mplace_issues"] = clean_string_value_from_dict_object( consumer_metrics, "Consumer Metrics", "cmplx_cases_mplace_issues", rqst_errors, empty_string_allowed=True) validated_params["rqst_no_cps_consumers"] = rqst_no_cps_consumers validated_params[ "rqst_metrics_county"] = clean_string_value_from_dict_object( consumer_metrics, "Consumer Metrics", "County", rqst_errors) validated_params["location_instance_for_metrics"] = location_instance validated_params["unsaved_plan_stat_objs"] = unsaved_plan_stat_objs validated_params["metrics_date"] = metrics_date
def retrieve_related_spec_concern_objs_from_list_of_gen_concern_names( rqst_data, rqst_errors): list_of_related_specific_concern_qsets = [] no_of_unique_rel_spec_concerns = 0 # In python 2.X, the nonlocal keyword is not available to enable binding to non local variables in nested functions, # need to use this 'hack' to enable rebinding of a non local variable name. # More info here: https://stackoverflow.com/questions/2609518/python-nested-function-scopes unique_related_spec_concerns_qset = [None] rqst_ranked_general_concern_names = clean_list_value_from_dict_object( rqst_data, "root", "ranked_general_concerns", rqst_errors) if not rqst_errors: no_of_ranked_gen_concerns = len(rqst_ranked_general_concern_names) if no_of_ranked_gen_concerns <= MAX_NO_OF_GEN_CONCERNS_GIVEN: def check_that_gen_concerns_are_strings(): for indx, general_concern_name in enumerate( rqst_ranked_general_concern_names): if not isinstance(general_concern_name, str): rqst_errors.append( "All ranked general concerns must be strings, ranked general concern is not an string for 'related_general_concerns' field at index: {}" .format(indx)) check_that_gen_concerns_are_strings() def check_for_duplicates_in_gen_concerns(): ranked_general_concerns_names_set = set( rqst_ranked_general_concern_names) if len(ranked_general_concerns_names_set) != len( rqst_ranked_general_concern_names): rqst_errors.append( "There are duplicates in the 'ranked_general_concerns' list. No duplicates allowed" ) check_for_duplicates_in_gen_concerns() if not rqst_errors: ranked_general_concerns_errors = [] def get_related_specific_concerns_from_gen_concern_names(): for ranked_general_concerns_name in rqst_ranked_general_concern_names: try: ranked_general_concerns_object = ConsumerGeneralConcern.objects.get( name__iexact=ranked_general_concerns_name) related_spec_concerns_qset = ranked_general_concerns_object.related_specific_concerns.all( ).order_by("-research_weight") if unique_related_spec_concerns_qset[0]: unique_related_spec_concerns_qset[ 0] = unique_related_spec_concerns_qset[ 0] | related_spec_concerns_qset else: unique_related_spec_concerns_qset[ 0] = related_spec_concerns_qset list_of_related_specific_concern_qsets.append( related_spec_concerns_qset) except ConsumerGeneralConcern.DoesNotExist: ranked_general_concerns_errors.append( "No ConsumerGeneralConcern database entry found for name: {}" .format(ranked_general_concerns_name)) get_related_specific_concerns_from_gen_concern_names() def count_unique_related_specific_concerns(): return unique_related_spec_concerns_qset[0].distinct( ).count() if unique_related_spec_concerns_qset[0]: no_of_unique_rel_spec_concerns = count_unique_related_specific_concerns( ) def add_general_concern_errors_to_request_errors(): for ranked_general_concerns_error in ranked_general_concerns_errors: rqst_errors.append(ranked_general_concerns_error) add_general_concern_errors_to_request_errors() else: rqst_errors.append( "Maximum number of ranked_general_concerns is {}, the number given is: {}" .format(MAX_NO_OF_GEN_CONCERNS_GIVEN, no_of_ranked_gen_concerns)) return list_of_related_specific_concern_qsets, no_of_unique_rel_spec_concerns
def validate_modify_staff_params(rqst_body, validated_params, rqst_errors): if "email" in rqst_body: rqst_usr_email = clean_string_value_from_dict_object( rqst_body, "root", "email", rqst_errors) if rqst_usr_email and not rqst_errors: try: validate_email(rqst_usr_email) validated_params["rqst_usr_email"] = rqst_usr_email except forms.ValidationError: rqst_errors.append("{!s} must be a valid email address".format( rqst_usr_email)) if "first_name" in rqst_body: rqst_usr_f_name = clean_string_value_from_dict_object( rqst_body, "root", "first_name", rqst_errors) validated_params["rqst_usr_f_name"] = rqst_usr_f_name if "last_name" in rqst_body: rqst_usr_l_name = clean_string_value_from_dict_object( rqst_body, "root", "last_name", rqst_errors) validated_params["rqst_usr_l_name"] = rqst_usr_l_name if "county" in rqst_body: rqst_county = clean_string_value_from_dict_object( rqst_body, "root", "county", rqst_errors) validated_params["rqst_county"] = rqst_county if "type" in rqst_body: rqst_usr_type = clean_string_value_from_dict_object( rqst_body, "root", "type", rqst_errors) validated_params["rqst_usr_type"] = rqst_usr_type if "base_locations" in rqst_body: rqst_base_locations = clean_list_value_from_dict_object( rqst_body, "root", "base_locations", rqst_errors, empty_list_allowed=True) rqst_base_locations = list(set(rqst_base_locations)) base_location_objects = [] location_errors = [] if rqst_base_locations: for base_location_name in rqst_base_locations: try: base_location_object = NavMetricsLocation.objects.get( name=base_location_name) base_location_objects.append(base_location_object) except NavMetricsLocation.DoesNotExist: location_errors.append( "No Nav Hub Location Database entry found for name: {!s}" .format(base_location_name)) for location_error in location_errors: rqst_errors.append(location_error) validated_params["base_location_objects"] = base_location_objects if len(validated_params.keys()) < 2: rqst_errors.append( 'Not enough given parameters to modify staff instance.')
def validate_create_row_params(rqst_body, validated_params, rqst_errors): email = clean_string_value_from_dict_object(rqst_body, "root", "email", rqst_errors) if email and not rqst_errors: try: validate_email(email) except forms.ValidationError: rqst_errors.append("{!s} must be a valid email address".format(email)) validated_params["email"] = email mpn = clean_string_value_from_dict_object( rqst_body, "root", "mpn", rqst_errors, empty_string_allowed=True, none_allowed=True ) if mpn is None: mpn = '' validated_params["mpn"] = mpn first_name = clean_string_value_from_dict_object(rqst_body, "root", "first_name", rqst_errors) validated_params["first_name"] = first_name last_name = clean_string_value_from_dict_object(rqst_body, "root", "last_name", rqst_errors) validated_params["last_name"] = last_name county = clean_string_value_from_dict_object(rqst_body, "root", "county", rqst_errors) validated_params["county"] = county type = clean_string_value_from_dict_object(rqst_body, "root", "type", rqst_errors) validated_params["type"] = type if 'add_base_locations' in rqst_body: add_base_location_names = clean_list_value_from_dict_object( rqst_body, "root", "add_base_locations", rqst_errors, empty_list_allowed=True ) validated_base_location_names = [] for base_location_name in add_base_location_names: if not isinstance(base_location_name, str): rqst_errors.append('Error: A base_location_name in \'add_base_locations\' is not a string.') continue validated_base_location_names.append(base_location_name) validated_params['add_base_locations'] = validated_base_location_names if 'add_approved_clients_for_case_management' in rqst_body: add_approved_clients_for_case_management = clean_list_value_from_dict_object( rqst_body, "root", "add_approved_clients_for_case_management", rqst_errors, empty_list_allowed=True ) validated_approved_clients_for_case_management = [] for approved_client_for_case_management in add_approved_clients_for_case_management: if not isinstance(approved_client_for_case_management, int): rqst_errors.append('Error: An approved_client_for_case_management in \'add_approved_clients_for_case_management\' is not an integer.') continue validated_approved_clients_for_case_management.append(approved_client_for_case_management) validated_params['add_approved_clients_for_case_management'] = validated_approved_clients_for_case_management validate_nav_signup_params(rqst_body, validated_params, rqst_errors)
def validate_cps_info_params_for_modify_instance_rqst( rqst_cps_info_params, consumer_instance, rqst_consumer_met_nav_at, rqst_consumer_household_size, rqst_nav_instance, rqst_errors): validated_params = {} if not rqst_consumer_met_nav_at: rqst_consumer_met_nav_at = consumer_instance.met_nav_at if not rqst_consumer_household_size: rqst_consumer_household_size = consumer_instance.household_size if not rqst_nav_instance: rqst_nav_instance = consumer_instance.navigator if "primary_dependent" in rqst_cps_info_params: rqst_primary_dependent_dict = clean_dict_value_from_dict_object( rqst_cps_info_params, "cps_info", "primary_dependent", rqst_errors) primary_dependent_object = None if not rqst_errors: rqst_primary_dependent_database_id = clean_int_value_from_dict_object( rqst_primary_dependent_dict, "primary_dependent", "Consumer Database ID", rqst_errors, no_key_allowed=True) if not rqst_primary_dependent_database_id: found_primary_dependent_PICConsumer_entries = check_consumer_db_entries_for_dependent_info( rqst_primary_dependent_dict, rqst_errors) rqst_force_create_consumer = clean_bool_value_from_dict_object( rqst_primary_dependent_dict, "root", "force_create_consumer", rqst_errors, no_key_allowed=True) if found_primary_dependent_PICConsumer_entries and not rqst_force_create_consumer: rqst_errors.append( "The following PICConsumer object id(s) were found for given primary_dependent: {}. If you want to create a new consumer anyway, set cps_info['primary_dependent']['force_create_consumer'] to True." .format( json.dumps( found_primary_dependent_PICConsumer_entries))) else: try: primary_dependent_object = PICConsumer( first_name=rqst_primary_dependent_dict[ "first_name"], last_name=rqst_primary_dependent_dict["last_name"], met_nav_at=rqst_consumer_met_nav_at, household_size=rqst_consumer_household_size, navigator=rqst_nav_instance) except IntegrityError: rqst_errors.append( "Error creating primary_dependent database entry for params: {!s}" .format(json.dumps(rqst_primary_dependent_dict))) else: try: primary_dependent_object = PICConsumer.objects.get( id=rqst_primary_dependent_database_id) except PICConsumer.DoesNotExist: rqst_errors.append( "PICConsumer object does not exist for primary_dependent Database ID: {!s}" .format(str(rqst_primary_dependent_database_id))) validated_params["primary_dependent_object"] = primary_dependent_object if "secondary_dependents" in rqst_cps_info_params: rqst_secondary_dependents = clean_list_value_from_dict_object( rqst_cps_info_params, "cps_info", "secondary_dependents", rqst_errors, no_key_allowed=True, empty_list_allowed=True) validated_params[ "secondary_dependents_list"] = rqst_secondary_dependents secondary_dependents_list = [] if rqst_secondary_dependents: for dependent_index, rqst_secondary_dependent_dict in enumerate( rqst_secondary_dependents): secondary_dependent_object = None if not rqst_errors: rqst_secondary_dependent_database_id = clean_int_value_from_dict_object( rqst_secondary_dependent_dict, "secondary_dependent", "Consumer Database ID", rqst_errors, no_key_allowed=True) if not rqst_secondary_dependent_database_id: found_secondary_dependent_PICConsumer_entries = check_consumer_db_entries_for_dependent_info( rqst_secondary_dependent_dict, rqst_errors) rqst_force_create_consumer = clean_bool_value_from_dict_object( rqst_secondary_dependent_dict, "root", "force_create_consumer", rqst_errors, no_key_allowed=True) if found_secondary_dependent_PICConsumer_entries and not rqst_force_create_consumer: rqst_errors.append( "The following PICConsumer object id(s) were found for the secondary_dependent at index {}: {}. If you want to create a new consumer anyway, set cps_info['secondary_dependents'][index]['force_create_consumer'] to True." .format( dependent_index, json.dumps( found_secondary_dependent_PICConsumer_entries ))) else: try: secondary_dependent_object = PICConsumer( first_name=rqst_secondary_dependent_dict[ "first_name"], last_name=rqst_secondary_dependent_dict[ "last_name"], met_nav_at=rqst_consumer_met_nav_at, household_size=rqst_consumer_household_size, navigator=rqst_nav_instance) except IntegrityError: rqst_errors.append( "Error creating secondary_dependent database entry for params: {!s}" .format( json.dumps( rqst_secondary_dependent_dict))) else: try: secondary_dependent_object = PICConsumer.objects.get( id=rqst_secondary_dependent_database_id) except PICConsumer.DoesNotExist: rqst_errors.append( "PICConsumer object does not exist for secondary_dependent with index({!s}) and Database ID: {!s}" .format( str(dependent_index), str(rqst_secondary_dependent_database_id))) secondary_dependents_list.append(secondary_dependent_object) validated_params[ "secondary_dependents_list"] = secondary_dependents_list if "cps_location" in rqst_cps_info_params: rqst_cps_location = clean_string_value_from_dict_object( rqst_cps_info_params, "cps_info", "cps_location", rqst_errors) validated_params["rqst_cps_location"] = rqst_cps_location if "apt_date" in rqst_cps_info_params: apt_date_dict = clean_dict_value_from_dict_object( rqst_cps_info_params, "cps_info", "apt_date", rqst_errors) rqst_apt_date = None if apt_date_dict is not None: month = clean_int_value_from_dict_object(apt_date_dict, "date_met_nav", "Month", rqst_errors) if month: if month < 1 or month > 12: rqst_errors.append( "Month must be between 1 and 12 inclusive") day = clean_int_value_from_dict_object(apt_date_dict, "date_met_nav", "Day", rqst_errors) if day: if day < 1 or day > 31: rqst_errors.append( "Day must be between 1 and 31 inclusive") year = clean_int_value_from_dict_object(apt_date_dict, "date_met_nav", "Year", rqst_errors) if year: if year < 1 or year > 9999: rqst_errors.append( "Year must be between 1 and 9999 inclusive") if not rqst_errors: rqst_apt_date = datetime.date(year, month, day) validated_params["rqst_apt_date"] = rqst_apt_date if "target_list" in rqst_cps_info_params: rqst_target_list = clean_bool_value_from_dict_object( rqst_cps_info_params, "cps_info", "target_list", rqst_errors) validated_params["rqst_target_list"] = rqst_target_list if "phone_apt" in rqst_cps_info_params: rqst_phone_apt = clean_bool_value_from_dict_object( rqst_cps_info_params, "cps_info", "phone_apt", rqst_errors) validated_params["rqst_phone_apt"] = rqst_phone_apt if "case_mgmt_type" in rqst_cps_info_params: rqst_case_mgmt_type = clean_string_value_from_dict_object( rqst_cps_info_params, "cps_info", "case_mgmt_type", rqst_errors) validated_params["rqst_case_mgmt_type"] = rqst_case_mgmt_type if "case_mgmt_status" in rqst_cps_info_params: rqst_case_mgmt_status = clean_string_value_from_dict_object( rqst_cps_info_params, "cps_info", "case_mgmt_status", rqst_errors) validated_params["rqst_case_mgmt_status"] = rqst_case_mgmt_status if "app_type" in rqst_cps_info_params: rqst_app_type = clean_string_value_from_dict_object( rqst_cps_info_params, "cps_info", "app_type", rqst_errors) validated_params["rqst_app_type"] = rqst_app_type if "app_status" in rqst_cps_info_params: rqst_app_status = clean_string_value_from_dict_object( rqst_cps_info_params, "cps_info", "app_status", rqst_errors) validated_params["rqst_app_status"] = rqst_app_status if "point_of_origin" in rqst_cps_info_params: rqst_point_of_origin = clean_string_value_from_dict_object( rqst_cps_info_params, "cps_info", "point_of_origin", rqst_errors) validated_params["rqst_point_of_origin"] = rqst_point_of_origin return validated_params
def validate_modify_instance_rqst_params(rqst_params, rqst_errors): validated_params = {} consumer_instance = None rqst_consumer_id = clean_int_value_from_dict_object( rqst_params, "root", "Consumer Database ID", rqst_errors) validated_params['rqst_consumer_id'] = rqst_consumer_id if not rqst_errors: try: consumer_instance = PICConsumer.objects.get(id=rqst_consumer_id) except PICConsumer.DoesNotExist: rqst_errors.append( 'Consumer database entry does not exist for the id: {}'.format( rqst_consumer_id)) validated_params['consumer_instance'] = consumer_instance if "Email" in rqst_params: rqst_consumer_email = clean_string_value_from_dict_object( rqst_params, "root", "Email", rqst_errors, empty_string_allowed=True) if rqst_consumer_email: try: validate_email(rqst_consumer_email) except forms.ValidationError: rqst_errors.append("{!s} must be a valid email address".format( rqst_consumer_email)) validated_params["rqst_consumer_email"] = rqst_consumer_email if "First Name" in rqst_params: rqst_consumer_f_name = clean_string_value_from_dict_object( rqst_params, "root", "First Name", rqst_errors) validated_params["rqst_consumer_f_name"] = rqst_consumer_f_name if "Middle Name" in rqst_params: rqst_consumer_m_name = clean_string_value_from_dict_object( rqst_params, "root", "Middle Name", rqst_errors, empty_string_allowed=True) validated_params["rqst_consumer_m_name"] = rqst_consumer_m_name if "Last Name" in rqst_params: rqst_consumer_l_name = clean_string_value_from_dict_object( rqst_params, "root", "Last Name", rqst_errors) validated_params["rqst_consumer_l_name"] = rqst_consumer_l_name if "Plan" in rqst_params: rqst_consumer_plan = clean_string_value_from_dict_object( rqst_params, "root", "Plan", rqst_errors, empty_string_allowed=True) validated_params["rqst_consumer_plan"] = rqst_consumer_plan rqst_consumer_met_nav_at = None if "Met Navigator At" in rqst_params: rqst_consumer_met_nav_at = clean_string_value_from_dict_object( rqst_params, "root", "Met Navigator At", rqst_errors) validated_params["rqst_consumer_met_nav_at"] = rqst_consumer_met_nav_at rqst_consumer_household_size = None if "Household Size" in rqst_params: rqst_consumer_household_size = clean_int_value_from_dict_object( rqst_params, "root", "Household Size", rqst_errors) validated_params[ "rqst_consumer_household_size"] = rqst_consumer_household_size if "Phone Number" in rqst_params: rqst_consumer_phone = clean_string_value_from_dict_object( rqst_params, "root", "Phone Number", rqst_errors, empty_string_allowed=True) validated_params["rqst_consumer_phone"] = rqst_consumer_phone if "Preferred Language" in rqst_params: rqst_consumer_pref_lang = clean_string_value_from_dict_object( rqst_params, "root", "Preferred Language", rqst_errors, empty_string_allowed=True) validated_params["rqst_consumer_pref_lang"] = rqst_consumer_pref_lang if "Navigator Notes" in rqst_params: rqst_navigator_notes = clean_list_value_from_dict_object( rqst_params, "root", "Navigator Notes", rqst_errors, empty_list_allowed=True) validated_params["rqst_navigator_notes"] = rqst_navigator_notes if "Address Line 1" in rqst_params: rqst_address_line_1 = clean_string_value_from_dict_object( rqst_params, "root", "Address Line 1", rqst_errors, empty_string_allowed=True) validated_params["rqst_address_line_1"] = rqst_address_line_1 if "Address Line 2" in rqst_params: rqst_address_line_2 = clean_string_value_from_dict_object( rqst_params, "root", "Address Line 2", rqst_errors, empty_string_allowed=True) if rqst_address_line_2 is None: rqst_address_line_2 = '' validated_params["rqst_address_line_2"] = rqst_address_line_2 if "City" in rqst_params: rqst_city = clean_string_value_from_dict_object( rqst_params, "root", "City", rqst_errors, empty_string_allowed=True) validated_params["rqst_city"] = rqst_city if "State" in rqst_params: rqst_state = clean_string_value_from_dict_object( rqst_params, "root", "State", rqst_errors, empty_string_allowed=True) validated_params["rqst_state"] = rqst_state if "Zipcode" in rqst_params: rqst_zipcode = clean_string_value_from_dict_object( rqst_params, "root", "Zipcode", rqst_errors, empty_string_allowed=True) validated_params["rqst_zipcode"] = rqst_zipcode nav_instance = None if "Navigator Database ID" in rqst_params: rqst_nav_id = clean_int_value_from_dict_object( rqst_params, "root", "Navigator Database ID", rqst_errors) if rqst_nav_id and not rqst_errors: try: nav_instance = Navigators.objects.get(id=rqst_nav_id) except Navigators.DoesNotExist: rqst_errors.append( 'Staff database entry does not exist for the navigator id: {}' .format(rqst_nav_id)) validated_params["rqst_nav_id"] = rqst_nav_id validated_params["nav_instance"] = nav_instance rqst_date_met_nav = None if "date_met_nav" in rqst_params: date_met_nav_dict = clean_dict_value_from_dict_object( rqst_params, "root", "date_met_nav", rqst_errors, none_allowed=True) if date_met_nav_dict is not None: month = clean_int_value_from_dict_object(date_met_nav_dict, "date_met_nav", "Month", rqst_errors) if month: if month < 1 or month > 12: rqst_errors.append( "Month must be between 1 and 12 inclusive") day = clean_int_value_from_dict_object(date_met_nav_dict, "date_met_nav", "Day", rqst_errors) if day: if day < 1 or day > 31: rqst_errors.append( "Day must be between 1 and 31 inclusive") year = clean_int_value_from_dict_object(date_met_nav_dict, "date_met_nav", "Year", rqst_errors) if year: if year < 1 or year > 9999: rqst_errors.append( "Year must be between 1 and 9999 inclusive") if not rqst_errors: rqst_date_met_nav = datetime.date(year, month, day) validated_params["rqst_date_met_nav"] = rqst_date_met_nav if "cps_consumer" in rqst_params: rqst_cps_consumer = clean_bool_value_from_dict_object( rqst_params, "root", "cps_consumer", rqst_errors, no_key_allowed=True) validated_params["rqst_cps_consumer"] = rqst_cps_consumer if "cps_info" in rqst_params: rqst_cps_info_dict = clean_dict_value_from_dict_object( rqst_params, "root", "cps_info", rqst_errors, none_allowed=True) validated_cps_info_dict = None if consumer_instance and rqst_cps_info_dict: validated_cps_info_dict = validate_cps_info_params_for_modify_instance_rqst( rqst_cps_info_dict, consumer_instance, rqst_consumer_met_nav_at, rqst_consumer_household_size, nav_instance, rqst_errors) validated_params["rqst_cps_info_dict"] = rqst_cps_info_dict validated_params["validated_cps_info_dict"] = validated_cps_info_dict if "create_backup" in rqst_params: validated_params[ 'rqst_create_backup'] = clean_bool_value_from_dict_object( rqst_params, "root", "create_backup", rqst_errors, no_key_allowed=True) if len(validated_params) < 3: rqst_errors.append("No parameters to modify are given.") return validated_params
def validate_add_instance_rqst_params(post_data, post_errors): rqst_consumer_email = clean_string_value_from_dict_object( post_data, "root", "Email", post_errors, empty_string_allowed=True) if rqst_consumer_email and not post_errors: try: validate_email(rqst_consumer_email) except forms.ValidationError: post_errors.append("{!s} must be a valid email address".format( rqst_consumer_email)) rqst_consumer_f_name = clean_string_value_from_dict_object( post_data, "root", "First Name", post_errors) rqst_consumer_m_name = clean_string_value_from_dict_object( post_data, "root", "Middle Name", post_errors, empty_string_allowed=True) rqst_consumer_l_name = clean_string_value_from_dict_object( post_data, "root", "Last Name", post_errors) rqst_consumer_plan = clean_string_value_from_dict_object( post_data, "root", "Plan", post_errors, empty_string_allowed=True) rqst_consumer_met_nav_at = clean_string_value_from_dict_object( post_data, "root", "Met Navigator At", post_errors) rqst_consumer_household_size = clean_int_value_from_dict_object( post_data, "root", "Household Size", post_errors) rqst_consumer_phone = clean_string_value_from_dict_object( post_data, "root", "Phone Number", post_errors, empty_string_allowed=True) rqst_consumer_pref_lang = clean_string_value_from_dict_object( post_data, "root", "Preferred Language", post_errors, empty_string_allowed=True) rqst_navigator_notes = clean_list_value_from_dict_object( post_data, "root", "Navigator Notes", post_errors, empty_list_allowed=True) rqst_address_line_1 = clean_string_value_from_dict_object( post_data, "root", "Address Line 1", post_errors, empty_string_allowed=True) rqst_address_line_2 = clean_string_value_from_dict_object( post_data, "root", "Address Line 2", post_errors, empty_string_allowed=True) if rqst_address_line_2 is None: rqst_address_line_2 = '' rqst_city = clean_string_value_from_dict_object(post_data, "root", "City", post_errors, empty_string_allowed=True) rqst_state = clean_string_value_from_dict_object(post_data, "root", "State", post_errors, empty_string_allowed=True) rqst_zipcode = clean_string_value_from_dict_object( post_data, "root", "Zipcode", post_errors, empty_string_allowed=True) date_met_nav_dict = clean_dict_value_from_dict_object(post_data, "root", "date_met_nav", post_errors, none_allowed=True) rqst_date_met_nav = None if date_met_nav_dict is not None: month = clean_int_value_from_dict_object(date_met_nav_dict, "date_met_nav", "Month", post_errors) if month: if month < 1 or month > 12: post_errors.append("Month must be between 1 and 12 inclusive") day = clean_int_value_from_dict_object(date_met_nav_dict, "date_met_nav", "Day", post_errors) if day: if day < 1 or day > 31: post_errors.append("Day must be between 1 and 31 inclusive") year = clean_int_value_from_dict_object(date_met_nav_dict, "date_met_nav", "Year", post_errors) if year: if year < 1 or year > 9999: post_errors.append("Year must be between 1 and 9999 inclusive") if not post_errors: rqst_date_met_nav = datetime.date(year, month, day) rqst_nav_id = clean_int_value_from_dict_object(post_data, "root", "Navigator Database ID", post_errors) nav_instance = None if rqst_nav_id and not post_errors: try: nav_instance = Navigators.objects.get(id=rqst_nav_id) except Navigators.DoesNotExist: post_errors.append( 'Staff database entry does not exist for the navigator id: {}'. format(rqst_nav_id)) rqst_cps_consumer = clean_bool_value_from_dict_object(post_data, "root", "cps_consumer", post_errors, no_key_allowed=True) rqst_cps_info_dict = clean_dict_value_from_dict_object(post_data, "root", "cps_info", post_errors, no_key_allowed=True, none_allowed=True) if rqst_cps_consumer and not rqst_cps_info_dict: post_errors.append( "cps_info key must be present and a non empty dictionary in order to set cps_consumer to True." ) validated_cps_info_dict = None if rqst_cps_info_dict: if rqst_cps_consumer: validated_cps_info_dict = validate_cps_info_params_for_add_instance_rqst( rqst_cps_info_dict, rqst_consumer_met_nav_at, rqst_consumer_household_size, nav_instance, post_errors) else: post_errors.append( "cps_consumer key must be True in order to add consumer with cps_info." ) rqst_create_backup = clean_bool_value_from_dict_object(post_data, "root", "create_backup", post_errors, no_key_allowed=True) rqst_hospital_info_dict = clean_dict_value_from_dict_object( post_data, "root", "consumer_hospital_info", post_errors, no_key_allowed=True, none_allowed=True) validated_hospital_info_dict = None if rqst_hospital_info_dict: validated_hospital_info_dict = validate_hospital_info_params( rqst_hospital_info_dict, post_errors) return { "rqst_consumer_email": rqst_consumer_email, "rqst_consumer_f_name": rqst_consumer_f_name, "rqst_consumer_m_name": rqst_consumer_m_name, "rqst_consumer_l_name": rqst_consumer_l_name, "rqst_consumer_plan": rqst_consumer_plan, "rqst_consumer_met_nav_at": rqst_consumer_met_nav_at, "rqst_consumer_household_size": rqst_consumer_household_size, "rqst_consumer_phone": rqst_consumer_phone, "rqst_consumer_pref_lang": rqst_consumer_pref_lang, "rqst_navigator_notes": rqst_navigator_notes, "rqst_nav_id": rqst_nav_id, "nav_instance": nav_instance, "rqst_address_line_1": rqst_address_line_1, "rqst_address_line_2": rqst_address_line_2, "rqst_city": rqst_city, "rqst_state": rqst_state, "rqst_zipcode": rqst_zipcode, "rqst_date_met_nav": rqst_date_met_nav, "rqst_cps_consumer": rqst_cps_consumer, "rqst_cps_info_dict": rqst_cps_info_dict, "validated_cps_info_dict": validated_cps_info_dict, "validated_hospital_info_dict": validated_hospital_info_dict, "rqst_create_backup": rqst_create_backup }