def get_sign_out():
    """
    Signs the user out of eQ and redirects to the log out url.
    """
    if not cookie_session:
        log_out_url = get_census_base_url(None, None)

    elif ("census" in (theme := cookie_session.get("theme", DEFAULT_THEME))
          and cookie_session.get("submitted") is True):
        session_store = get_session_store()
        language_code = (session_store.session_data.language_code
                         if session_store else None)
        log_out_url = get_census_base_url(theme, language_code)
def block(schema,
          questionnaire_store,
          block_id,
          list_name=None,
          list_item_id=None):
    try:
        block_handler = get_block_handler(
            schema=schema,
            block_id=block_id,
            list_name=list_name,
            list_item_id=list_item_id,
            questionnaire_store=questionnaire_store,
            language=flask_babel.get_locale().language,
            request_args=request.args,
            form_data=request.form,
        )
    except InvalidLocationException:
        raise NotFound

    if block_handler.block["type"] == "RelationshipCollector":
        return redirect(block_handler.get_first_location_url())

    if "action[clear_radios]" in request.form:
        block_handler.clear_radio_answers()
        return redirect(request.url)

    if request.method == "GET" or (hasattr(block_handler, "form")
                                   and not block_handler.form.validate()):
        return _render_page(
            template=block_handler.rendered_block["type"],
            context=block_handler.get_context(),
            previous_location_url=block_handler.get_previous_location_url(),
            schema=schema,
            page_title=block_handler.page_title,
        )

    if block_handler.block["type"] in END_BLOCKS:
        submission_handler = SubmissionHandler(
            schema, questionnaire_store,
            block_handler.router.full_routing_path())
        submission_handler.submit_questionnaire()

        language_code = get_session_store().session_data.language_code
        if "census" in cookie_session["theme"]:
            log_out_url = get_census_base_url(cookie_session["theme"],
                                              language_code)
            cookie_session["account_service_log_out_url"] = log_out_url

        return redirect(url_for("post_submission.get_thank_you"))

    block_handler.handle_post()

    next_location_url = block_handler.get_next_location_url()
    return redirect(next_location_url)
def test_get_census_base_url_ga():
    expected = "https://census.gov.uk/"
    result = get_census_base_url(schema_theme="census", language_code="ga")

    assert expected == result
def test_get_census_base_url_welsh_is_priority_over_nisra():
    expected = "https://cyfrifiad.gov.uk/"
    result = get_census_base_url(schema_theme="census-nisra",
                                 language_code="cy")

    assert expected == result
def test_get_census_base_url_welsh():
    expected = "https://cyfrifiad.gov.uk/"
    result = get_census_base_url(schema_theme="census", language_code="cy")

    assert expected == result
def test_get_census_base_url_nisra_theme():
    expected = "https://census.gov.uk/ni/"
    result = get_census_base_url(schema_theme="census-nisra",
                                 language_code="en")

    assert expected == result