示例#1
0
def get_thank_you(schema):
    session_store = get_session_store()
    session_data = session_store.session_data

    if not session_data.submitted_time:
        return redirect(url_for("questionnaire.get_questionnaire"))

    metadata_context = build_metadata_context_for_survey_completed(session_data)

    view_submission_url = None
    view_submission_duration = 0
    if _is_submission_viewable(schema.json, session_data.submitted_time):
        view_submission_url = url_for(".get_view_submission")
        view_submission_duration = humanize.naturaldelta(
            timedelta(seconds=schema.json["view_submitted_response"]["duration"])
        )

    cookie_session.pop("account_service_log_out_url", None)
    cookie_session.pop("account_service_url", None)

    return render_template(
        template="thank-you",
        metadata=metadata_context,
        survey_id=schema.json["survey_id"],
        is_view_submitted_response_enabled=is_view_submitted_response_enabled(
            schema.json
        ),
        view_submission_url=view_submission_url,
        view_submission_duration=view_submission_duration,
    )
示例#2
0
def get_view_submission(schema):

    session_data = get_session_store().session_data

    if _is_submission_viewable(schema.json, session_data.submitted_time):
        submitted_data = current_app.eq["storage"].get_by_key(
            SubmittedResponse, session_data.tx_id
        )

        if submitted_data:

            metadata_context = build_metadata_context_for_survey_completed(session_data)

            pepper = current_app.eq["secret_store"].get_secret_by_name(
                "EQ_SERVER_SIDE_STORAGE_ENCRYPTION_USER_PEPPER"
            )

            encrypter = StorageEncryption(
                current_user.user_id, current_user.user_ik, pepper
            )
            submitted_data = encrypter.decrypt_data(submitted_data.data)

            # for backwards compatibility
            # submitted data used to be base64 encoded before encryption
            try:
                submitted_data = base64url_decode(submitted_data.decode()).decode()
            except ValueError:
                pass

            submitted_data = json.loads(submitted_data)
            answer_store = AnswerStore(submitted_data.get("answers"))
            list_store = ListStore(submitted_data.get("lists"))
            progress_store = ProgressStore(submitted_data.get("progress"))

            metadata = submitted_data.get("metadata")
            language_code = get_session_store().session_data.language_code
            questionnaire_summary_context = QuestionnaireSummaryContext(
                language_code,
                schema,
                answer_store,
                list_store,
                progress_store,
                metadata,
            )

            context = questionnaire_summary_context(answers_are_editable=False)

            return render_template(
                template="view-submission",
                metadata=metadata_context,
                content=context,
                survey_id=schema.json["survey_id"],
            )

    return redirect(url_for("post_submission.get_thank_you"))
示例#3
0
def test_context_includes_ru_name_if_available(fake_session_data):
    fake_session_data.ru_name = "some name"

    context = build_metadata_context_for_survey_completed(fake_session_data)

    assert context["ru_name"] == "some name"
示例#4
0
def test_context_does_not_include_period_str_and_ru_name_by_default(
        fake_session_data):
    context = build_metadata_context_for_survey_completed(fake_session_data)
    assert "ru_name" not in context
    assert "period_str" not in context
示例#5
0
def test_context_includes_period_str_if_available(fake_session_data):
    fake_session_data.period_str = "some name"

    context = build_metadata_context_for_survey_completed(fake_session_data)

    assert context["period_str"] == "some name"