Ejemplo n.º 1
0
def get_questionnaire(schema, questionnaire_store):
    router = Router(
        schema,
        questionnaire_store.answer_store,
        questionnaire_store.list_store,
        questionnaire_store.progress_store,
        questionnaire_store.metadata,
    )

    if not router.can_access_hub():
        redirect_location = router.get_first_incomplete_location_in_survey()
        return redirect(redirect_location.url())

    language_code = get_session_store().session_data.language_code

    hub = HubContext(
        language=language_code,
        schema=schema,
        answer_store=questionnaire_store.answer_store,
        list_store=questionnaire_store.list_store,
        progress_store=questionnaire_store.progress_store,
        metadata=questionnaire_store.metadata,
    )

    hub_context = hub.get_context(
        router.is_survey_complete(), router.enabled_section_ids
    )

    return render_template("hub", content=hub_context)
Ejemplo n.º 2
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,
    )
Ejemplo n.º 3
0
def _render_template(template, **kwargs):
    cookie_message = request.cookies.get('ons_cookie_message_displayed')
    allow_analytics = analytics_allowed(request)
    return template_helper.render_template(template,
                                           cookie_message=cookie_message,
                                           allow_analytics=allow_analytics,
                                           **kwargs)
Ejemplo n.º 4
0
def _render_error_page(status_code, template=None):
    handle_language()
    template = template or status_code
    using_edge = request.user_agent.browser == "edge"

    return (
        render_template(template=f"errors/{template}", using_edge=using_edge),
        status_code,
    )
Ejemplo n.º 5
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"))
Ejemplo n.º 6
0
def internal_server_error(error=None):
    try:
        log_error(error, 500)
        return _render_error_page(500)
    except Exception:  # pylint:disable=broad-except
        logger.error(
            "an error has occurred when rendering 500 error",
            exc_info=True,
            url=request.url,
            status_code=500,
        )
        return render_template(template="errors/500"), 500
Ejemplo n.º 7
0
def get_sign_out():
    """
    Signs the user first out of eq, then the account service by hitting the account services'
    logout url.
    """
    logout_user()

    account_service_log_out_url = cookie_session.get(
        "account_service_log_out_url")
    if account_service_log_out_url:
        return redirect(account_service_log_out_url)

    return render_template(template="signed-out")
Ejemplo n.º 8
0
def _render_page(block_type, context, current_location, previous_location_url,
                 schema, page_title):
    if request_wants_json():
        return jsonify(context)

    session_timeout = get_session_timeout_in_seconds(schema)

    return render_template(
        template=block_type,
        content=context,
        current_location=current_location,
        previous_location_url=previous_location_url,
        session_timeout=session_timeout,
        legal_basis=schema.json.get("legal_basis"),
        page_title=page_title,
    )
Ejemplo n.º 9
0
def _render_template(context, current_location, template, front_end_navigation,
                     previous_url, schema, metadata, answer_store, **kwargs):
    page_title = get_page_title_for_location(schema, current_location,
                                             metadata, answer_store)

    return render_template(
        template,
        content=context,
        current_location=current_location,
        navigation=front_end_navigation,
        previous_location=previous_url,
        page_title=page_title,
        metadata=kwargs.pop(
            'metadata_context'
        ),  # `metadata_context` is used as `metadata` in the jinja templates
        **kwargs)
Ejemplo n.º 10
0
def _render_template(context, current_location, template, front_end_navigation,
                     previous_url, add_person_url, schema, metadata,
                     answer_store, **kwargs):
    page_title = get_page_title_for_location(schema, current_location,
                                             metadata, answer_store)

    session_store = get_session_store()
    session_data = session_store.session_data

    return render_template(
        template,
        content=context,
        current_location=current_location,
        navigation=front_end_navigation,
        previous_location=previous_url,
        add_person_location=add_person_url,
        page_title=page_title,
        metadata=kwargs.pop(
            'metadata_context'
        ),  # `metadata_context` is used as `metadata` in the jinja templates
        language_code=session_data.language_code,
        **kwargs)
Ejemplo n.º 11
0
def _render_template(template, **kwargs):
    return template_helper.render_template(template, **kwargs)
Ejemplo n.º 12
0
def accessibility():
    return render_template("static/accessibility")
Ejemplo n.º 13
0
def privacy():
    return render_template("static/privacy")
Ejemplo n.º 14
0
def get_session_expired():
    logout_user()

    return render_template("errors/session-expired")