Exemplo n.º 1
0
def get_view_submission(schema, eq_id, form_type):  # pylint: disable=unused-argument

    session_data = get_session_store().session_data

    if _is_submission_viewable(schema.json, session_data.submitted_time):
        submitted_data = data_access.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 = json.loads(
                encrypter.decrypt_data(submitted_data.data))
            answer_store = AnswerStore(
                existing_answers=submitted_data.get('answers'))

            metadata = submitted_data.get('metadata')

            routing_path = PathFinder(schema, answer_store, metadata,
                                      []).get_full_routing_path()

            schema_context = _get_schema_context(routing_path, 0, metadata,
                                                 answer_store, schema)
            rendered_schema = renderer.render(schema.json, **schema_context)
            summary_rendered_context = build_summary_rendering_context(
                schema, rendered_schema['sections'], answer_store, metadata)

            context = {
                'summary': {
                    'groups':
                    summary_rendered_context,
                    'answers_are_editable':
                    False,
                    'is_view_submission_response_enabled':
                    is_view_submitted_response_enabled(schema.json),
                },
                'variables': None,
            }

            return render_theme_template(
                schema.json['theme'],
                template_name='view-submission.html',
                metadata=metadata_context,
                analytics_ua_id=current_app.config['EQ_UA_ID'],
                survey_id=schema.json['survey_id'],
                survey_title=TemplateRenderer.safe_content(
                    schema.json['title']),
                content=context)

    return redirect(
        url_for('post_submission.get_thank_you',
                eq_id=eq_id,
                form_type=form_type))
Exemplo n.º 2
0
def get_thank_you(schema, metadata, eq_id, form_type):
    session_data = get_session_store().session_data
    completeness = get_completeness(current_user)

    if session_data.submitted_time:
        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',
                                          eq_id=eq_id,
                                          form_type=form_type)
            view_submission_duration = humanize.naturaldelta(
                timedelta(seconds=schema.json['view_submitted_response']
                          ['duration']))

        cookie_message = request.cookies.get('ons_cookie_message_displayed')
        allow_analytics = analytics_allowed(request)

        return render_theme_template(
            schema.json['theme'],
            template_name='thank-you.html',
            metadata=metadata_context,
            analytics_gtm_id=current_app.config['EQ_GTM_ID'],
            analytics_gtm_env_id=current_app.config['EQ_GTM_ENV_ID'],
            survey_id=schema.json['survey_id'],
            survey_title=TemplateRenderer.safe_content(schema.json['title']),
            is_view_submitted_response_enabled=
            is_view_submitted_response_enabled(schema.json),
            view_submission_url=view_submission_url,
            account_service_url=cookie_session.get('account_service_url'),
            account_service_log_out_url=cookie_session.get(
                'account_service_log_out_url'),
            view_submission_duration=view_submission_duration,
            cookie_message=cookie_message,
            allow_analytics=allow_analytics)

    routing_path = path_finder.get_full_routing_path()

    router = Router(schema, routing_path, completeness)
    next_location = router.get_next_location()

    return _redirect_to_location(metadata['collection_exercise_sid'],
                                 metadata.get('eq_id'),
                                 metadata.get('form_type'), next_location)
Exemplo n.º 3
0
def get_thank_you(schema, metadata, eq_id, form_type):  # pylint: disable=unused-argument
    session_data = get_session_store().session_data
    completeness = get_completeness(current_user)

    if session_data.submitted_time:
        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',
                                          eq_id=eq_id,
                                          form_type=form_type)
            view_submission_duration = humanize.naturaldelta(
                timedelta(seconds=schema.json['view_submitted_response']
                          ['duration']))

        return render_theme_template(
            schema.json['theme'],
            template_name='thank-you.html',
            metadata=metadata_context,
            analytics_ua_id=current_app.config['EQ_UA_ID'],
            survey_id=schema.json['survey_id'],
            survey_title=TemplateRenderer.safe_content(schema.json['title']),
            is_view_submitted_response_enabled=
            is_view_submitted_response_enabled(schema.json),
            view_submission_url=view_submission_url,
            view_submission_duration=view_submission_duration)

    routing_path = path_finder.get_full_routing_path()

    collection_id = metadata['collection_exercise_sid']

    router = Router(schema, routing_path, completeness)
    next_location = router.get_next_location()

    return _redirect_to_location(collection_id, metadata.get('eq_id'),
                                 metadata.get('form_type'), next_location)
Exemplo n.º 4
0
def get_thank_you(eq_id, form_type, collection_id):  # pylint: disable=unused-argument
    survey_completed_metadata = current_app.eq[
        'session_storage'].get_survey_completed_metadata()
    schema = load_schema_from_params(eq_id, form_type)

    if survey_completed_metadata:
        metadata_context = build_metadata_context_for_survey_completed(
            survey_completed_metadata)
        thank_you_template = render_theme_template(
            schema['theme'],
            template_name='thank-you.html',
            meta=metadata_context,
            analytics_ua_id=current_app.config['EQ_UA_ID'],
            survey_id=schema['survey_id'],
            survey_title=TemplateRenderer.safe_content(schema['title']))
        if settings.FEEDBACK_ENABLED_ALL or form_type in settings.FEEDBACK_ENABLED_FOR:
            session['feedback'] = True
            session['form_type'] = form_type
        return thank_you_template
    else:
        return _redirect_to_latest_location(collection_id, eq_id, form_type,
                                            schema)
Exemplo n.º 5
0
def _render_submission_page(session_data, submitted_data, schema, eq_id,
                            form_type):  # pylint: disable=unused-argument, too-many-locals

    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'))

    metadata = submitted_data.get('metadata')
    collection_metadata = submitted_data.get('collection_metadata')

    routing_path = PathFinder(schema, answer_store, metadata,
                              []).get_full_routing_path()

    schema_context = _get_schema_context(routing_path, None, metadata,
                                         collection_metadata, answer_store,
                                         schema)
    section_list = schema.json['sections']
    summary_rendered_context = build_summary_rendering_context(
        schema, section_list, answer_store, metadata, schema_context)

    context = {
        'summary': {
            'groups':
            summary_rendered_context,
            'answers_are_editable':
            False,
            'is_view_submission_response_enabled':
            is_view_submitted_response_enabled(schema.json),
        },
        'variables': None,
    }

    cookie_message = request.cookies.get('ons_cookie_message_displayed')
    allow_analytics = analytics_allowed(request)
    download_pdf_url = url_for('post_submission.download_pdf',
                               eq_id=eq_id,
                               form_type=form_type)

    return render_theme_template(
        schema.json['theme'],
        template_name='view-submission.html',
        metadata=metadata_context,
        download_pdf_url=download_pdf_url,
        analytics_gtm_id=current_app.config['EQ_GTM_ID'],
        analytics_gtm_env_id=current_app.config['EQ_GTM_ENV_ID'],
        survey_id=schema.json['survey_id'],
        survey_title=TemplateRenderer.safe_content(schema.json['title']),
        account_service_url=cookie_session.get('account_service_url'),
        account_service_log_out_url=cookie_session.get(
            'account_service_log_out_url'),
        content=context,
        cookie_message=cookie_message,
        allow_analytics=allow_analytics)
def get_view_submission(schema, eq_id, form_type):  # pylint: disable=unused-argument, too-many-locals

    session_data = get_session_store().session_data

    if _is_submission_viewable(schema.json, session_data.submitted_time):
        submitted_data = data_access.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'))

            metadata = submitted_data.get('metadata')
            collection_metadata = submitted_data.get('collection_metadata')

            routing_path = PathFinder(schema, answer_store, metadata,
                                      []).get_full_routing_path()

            schema_context = _get_schema_context(routing_path, None, metadata,
                                                 collection_metadata,
                                                 answer_store, schema)
            section_list = schema.json['sections']
            summary_rendered_context = build_summary_rendering_context(
                schema, section_list, answer_store, metadata, schema_context)

            context = {
                'summary': {
                    'groups':
                    summary_rendered_context,
                    'answers_are_editable':
                    False,
                    'is_view_submission_response_enabled':
                    is_view_submitted_response_enabled(schema.json),
                },
                'variables': None,
            }

            return render_theme_template(
                schema.json['theme'],
                template_name='view-submission.html',
                metadata=metadata_context,
                analytics_ua_id=current_app.config['EQ_UA_ID'],
                survey_id=schema.json['survey_id'],
                survey_title=TemplateRenderer.safe_content(
                    schema.json['title']),
                account_service_url=cookie_session.get('account_service_url'),
                account_service_log_out_url=cookie_session.get(
                    'account_service_log_out_url'),
                content=context)

    return redirect(
        url_for('post_submission.get_thank_you',
                eq_id=eq_id,
                form_type=form_type))