Beispiel #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())
    def test_get_section_return_location_when_section_complete_section_summary(
            self):
        schema = load_schema_from_name("test_hub_and_spoke")

        router = Router(
            schema,
            self.answer_store,
            self.list_store,
            self.progress_store,
            self.metadata,
        )

        routing_path = RoutingPath(
            ["proxy", "accommodation-details-summary"],
            section_id="accommodation-section",
        )
        location_when_section_complete = router.get_section_return_location_when_section_complete(
            routing_path=routing_path)
        self.assertEqual(
            location_when_section_complete,
            Location(
                section_id="accommodation-section",
                block_id="accommodation-details-summary",
            ),
        )
    def test_get_section_return_location_when_section_complete_no_section_summary(
            self):
        schema = load_schema_from_name("test_hub_and_spoke")

        router = Router(
            schema,
            self.answer_store,
            self.list_store,
            self.progress_store,
            self.metadata,
        )

        routing_path = RoutingPath(["employment-status", "employment-type"],
                                   section_id="employment-section")

        location_when_section_complete = router.get_section_return_location_when_section_complete(
            routing_path=routing_path)

        self.assertEqual(
            location_when_section_complete,
            Location(section_id="employment-section",
                     block_id="employment-status"),
        )