def get_section(schema, questionnaire_store, section_id, list_item_id=None): router = Router( schema, questionnaire_store.answer_store, questionnaire_store.list_store, questionnaire_store.progress_store, questionnaire_store.metadata, ) if not schema.is_hub_enabled(): redirect_location = router.get_first_incomplete_location_in_survey() return redirect(redirect_location.url()) if section_id not in router.enabled_section_ids: return redirect(url_for(".get_questionnaire")) routing_path = router.routing_path(section_id=section_id, list_item_id=list_item_id) section_status = questionnaire_store.progress_store.get_section_status( section_id=section_id, list_item_id=list_item_id) if section_status == CompletionStatus.COMPLETED: return redirect( router.get_section_return_location_when_section_complete( routing_path).url()) if section_status == CompletionStatus.NOT_STARTED: return redirect( router.get_first_incomplete_location_for_section( routing_path).url()) return redirect( router.get_first_incomplete_location_for_section( routing_path=routing_path).url())
def get_questionnaire(schema, questionnaire_store): router = Router( schema, questionnaire_store.answer_store, questionnaire_store.list_store, questionnaire_store.progress_store, questionnaire_store.metadata, ) if not router.can_access_hub(): redirect_location = router.get_first_incomplete_location_in_survey() return redirect(redirect_location.url()) language_code = get_session_store().session_data.language_code hub = HubContext( language=language_code, schema=schema, answer_store=questionnaire_store.answer_store, list_store=questionnaire_store.list_store, progress_store=questionnaire_store.progress_store, metadata=questionnaire_store.metadata, ) hub_context = hub.get_context( router.is_survey_complete(), router.enabled_section_ids ) return render_template("hub", content=hub_context)
def post_questionnaire(schema, questionnaire_store): if any(action in request.form for action in ("action[save_sign_out]", "action[sign_out]")): return redirect(url_for("session.get_sign_out")) router = Router( schema, questionnaire_store.answer_store, questionnaire_store.list_store, questionnaire_store.progress_store, questionnaire_store.metadata, ) if schema.is_hub_enabled() and router.is_survey_complete(): return submit_answers(schema, questionnaire_store, router.full_routing_path()) return redirect(router.get_first_incomplete_location_in_survey().url())