コード例 #1
0
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())
コード例 #2
0
    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"),
        )