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 test_get_first_incomplete_location_in_section(self): schema = load_schema_from_name("test_section_summary") progress_store = ProgressStore([{ "section_id": "property-details-section", "list_item_id": None, "status": CompletionStatus.COMPLETED, "block_ids": ["insurance-type"], }]) router = Router(schema, self.answer_store, self.list_store, progress_store, self.metadata) section_routing_path = RoutingPath( ["insurance-type", "insurance-address"], section_id="property-details-section", ) incomplete = router.get_first_incomplete_location_for_section( routing_path=section_routing_path) self.assertEqual( incomplete, Location(section_id="property-details-section", block_id="insurance-address"), )