Exemple #1
0
def create_app(application):
    from app.config import configs

    notify_environment = os.getenv("NOTIFY_ENVIRONMENT", "development")

    application.config.from_object(configs[notify_environment])

    application.config["NOTIFY_APP_NAME"] = application.name
    init_app(application)
    request_helper.init_app(application)
    db.init_app(application)
    migrate.init_app(application, db=db)
    ma.init_app(application)
    zendesk_client.init_app(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    aws_sns_client.init_app(application, statsd_client=statsd_client)
    aws_ses_client.init_app(application.config["AWS_REGION"], statsd_client=statsd_client)
    notify_celery.init_app(application)
    encryption.init_app(application)
    redis_store.init_app(application)
    performance_platform_client.init_app(application)
    document_download_client.init_app(application)
    clients.init_app(sms_clients=[aws_sns_client], email_clients=[aws_ses_client])

    register_blueprint(application)
    register_v2_blueprints(application)

    # avoid circular imports by importing this file later
    from app.commands import setup_commands

    setup_commands(application)

    return application
Exemple #2
0
def test_request_id_is_set_on_response(app):
    request_helper.init_app(app)
    client = app.test_client()

    with app.app_context():
        response = client.get('/', headers={'NotifyRequestID': 'generated'})
        assert response.headers['NotifyRequestID'] == 'generated'
Exemple #3
0
def create_app(application):
    application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']])

    application.url_map.converters['base64_uuid'] = Base64UUIDConverter

    babel = Babel(application)

    @babel.localeselector
    def get_locale():
        return get_current_locale(application)

    init_app(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    csrf.init_app(application)
    request_helper.init_app(application)

    from app.main import main as main_blueprint
    application.register_blueprint(main_blueprint)

    # from .status import status as status_blueprint
    # application.register_blueprint(status_blueprint)

    # add_template_filters(application)

    register_errorhandlers(application)

    service_api_client.init_app(application)
def create_app():
    application = Flask(__name__)

    init_app(application)

    load_config(application)

    from app.precompiled import precompiled_blueprint
    from app.preview import preview_blueprint
    from app.status import status_blueprint
    application.register_blueprint(status_blueprint)
    application.register_blueprint(preview_blueprint)
    application.register_blueprint(precompiled_blueprint)

    application.statsd_client = StatsdClient()
    application.statsd_client.init_app(application)
    application.encryption_client = Encryption()
    application.encryption_client.init_app(application)
    utils_logging.init_app(application, application.statsd_client)
    weasyprint_hack.init_app(application)
    request_helper.init_app(application)
    notify_celery.init_app(application)

    application.cache = init_cache(application)

    @auth.verify_token
    def verify_token(token):
        return token in application.config['TEMPLATE_PREVIEW_INTERNAL_SECRETS']

    return application
Exemple #5
0
def create_app(application):
    from app.config import configs

    notify_environment = os.getenv('NOTIFY_ENVIRONMENT', 'development')

    application.config.from_object(configs[notify_environment])

    application.config['NOTIFY_APP_NAME'] = application.name
    init_app(application)
    request_helper.init_app(application)
    db.init_app(application)
    migrate.init_app(application, db=db)
    ma.init_app(application)
    zendesk_client.init_app(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    firetext_client.init_app(application, statsd_client=statsd_client)
    loadtest_client.init_app(application, statsd_client=statsd_client)
    mmg_client.init_app(application, statsd_client=statsd_client)
    aws_sns_client.init_app(application, statsd_client=statsd_client)
    aws_pinpoint_client.init_app(application, statsd_client=statsd_client)
    aws_ses_client.init_app(application.config['AWS_SES_REGION'],
                            statsd_client=statsd_client)
    send_grid_client.init_app(application.config['SENDGRID_API_KEY'],
                              statsd_client=statsd_client)
    twilio_sms_client.init_app(
        logger=application.logger,
        callback_notify_url_host=application.config["API_HOST_NAME"])
    sinch_sms_client.init_app(
        logger=application.logger,
        callback_notify_url_host=application.config["API_HOST_NAME"],
        statsd_client=statsd_client)
    notify_celery.init_app(application)
    encryption.init_app(application)
    redis_store.init_app(application)
    performance_platform_client.init_app(application)
    document_download_client.init_app(application)
    clients.init_app(sms_clients=[
        firetext_client,
        mmg_client,
        aws_sns_client,
        aws_pinpoint_client,
        loadtest_client,
        twilio_sms_client,
        sinch_sms_client,
    ],
                     email_clients=[aws_ses_client, send_grid_client])

    register_blueprint(application)
    register_v2_blueprints(application)

    # avoid circular imports by importing this file later
    from app.commands import setup_commands
    setup_commands(application)

    return application
Exemple #6
0
def create_app(application):
    from app.config import configs

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])

    application.config['NOTIFY_APP_NAME'] = application.name
    init_app(application)

    # Metrics intentionally high up to give the most accurate timing and reliability that the metric is recorded
    metrics.init_app(application)
    request_helper.init_app(application)
    db.init_app(application)
    migrate.init_app(application, db=db)
    ma.init_app(application)
    zendesk_client.init_app(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    firetext_client.init_app(application, statsd_client=statsd_client)
    mmg_client.init_app(application, statsd_client=statsd_client)
    twilio_client.init_app(application, statsd_client=statsd_client)

    aws_ses_client.init_app(application.config['AWS_REGION'],
                            statsd_client=statsd_client)
    aws_ses_stub_client.init_app(application.config['AWS_REGION'],
                                 statsd_client=statsd_client,
                                 stub_url=application.config['SES_STUB_URL'])
    # If a stub url is provided for SES, then use the stub client rather than the real SES boto client
    email_clients = [
        aws_ses_stub_client
    ] if application.config['SES_STUB_URL'] else [aws_ses_client]
    notification_provider_clients.init_app(
        sms_clients=[firetext_client, mmg_client, twilio_client],
        email_clients=email_clients)

    notify_celery.init_app(application)
    encryption.init_app(application)
    redis_store.init_app(application)
    performance_platform_client.init_app(application)
    document_download_client.init_app(application)

    cbc_proxy_client.init_app(application)

    register_blueprint(application)
    register_v2_blueprints(application)

    # avoid circular imports by importing this file later
    from app.commands import setup_commands
    setup_commands(application)

    # set up sqlalchemy events
    setup_sqlalchemy_events(application)

    return application
Exemple #7
0
def test_request_id_is_set_on_response(app):
    request_helper.init_app(app)
    client = app.test_client()

    with app.app_context():
        response = client.get('/', headers={
            'X-B3-TraceId': 'generated',
            'X-B3-SpanId': 'generated'
        })
        assert response.headers['X-B3-TraceId'] == 'generated'
        assert response.headers['X-B3-SpanId'] == 'generated'
Exemple #8
0
def create_app(application):
    setup_commands(application)

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])

    init_app(application)
    statsd_client.init_app(application)
    deskpro_client.init_app(application)
    logging.init_app(application, statsd_client)
    csrf.init_app(application)
    request_helper.init_app(application)

    service_api_client.init_app(application)
    user_api_client.init_app(application)
    api_key_api_client.init_app(application)
    job_api_client.init_app(application)
    notification_api_client.init_app(application)
    support_api_client.init_app(application)
    status_api_client.init_app(application)
    invite_api_client.init_app(application)
    org_invite_api_client.init_app(application)
    template_statistics_client.init_app(application)
    events_api_client.init_app(application)
    provider_client.init_app(application)
    email_branding_client.init_app(application)
    organisations_client.init_app(application)
    letter_jobs_client.init_app(application)
    inbound_number_client.init_app(application)
    billing_api_client.init_app(application)
    complaint_api_client.init_app(application)
    platform_stats_api_client.init_app(application)

    login_manager.init_app(application)
    login_manager.login_view = 'main.sign_in'
    login_manager.login_message_category = 'default'
    login_manager.session_protection = None
    login_manager.anonymous_user = AnonymousUser

    from app.main import main as main_blueprint
    application.register_blueprint(main_blueprint)

    from .status import status as status_blueprint
    application.register_blueprint(status_blueprint)

    proxy_fix.init_app(application)

    add_template_filters(application)

    register_errorhandlers(application)

    setup_event_handlers()
Exemple #9
0
def test_request_id_is_set_on_error_response(app):
    request_helper.init_app(app)
    client = app.test_client()
    # turn off DEBUG so that the flask default error handler gets triggered
    app.config['DEBUG'] = False

    @app.route('/')
    def error_route():
        raise Exception()

    with app.app_context():
        response = client.get('/', headers={'NotifyRequestID': 'generated'})
        assert response.status_code == 500
        assert response.headers['NotifyRequestID'] == 'generated'
Exemple #10
0
def create_app():
    application = Flask('app', static_folder=None)
    application.config.from_object(configs[os.environ['NOTIFY_ENVIRONMENT']])

    request_helper.init_app(application)
    logging.init_app(application)

    document_store.init_app(application)
    antivirus_client.init_app(application)

    application.register_blueprint(download_blueprint)
    application.register_blueprint(upload_blueprint)
    application.register_blueprint(healthcheck_blueprint)

    return application
def create_app():
    application = Flask('app')
    application.config.from_object(configs[application.env])

    request_helper.init_app(application)
    logging.init_app(application)

    document_store.init_app(application)
    antivirus_client.init_app(application)
    metrics.init_app(application)

    application.register_blueprint(download_blueprint)
    application.register_blueprint(upload_blueprint)

    return application
Exemple #12
0
def create_app(application):
    from app.config import configs

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])

    application.config['NOTIFY_APP_NAME'] = application.name

    init_app(application)
    request_helper.init_app(application)
    db.init_app(application)
    migrate.init_app(application, db=db)
    ma.init_app(application)
    deskpro_client.init_app(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    telstra_sms_client.init_app(
        logger=application.logger,
        callback_notify_url_host=application.config["API_HOST_NAME"])
    twilio_sms_client.init_app(
        logger=application.logger,
        callback_notify_url_host=application.config["API_HOST_NAME"])
    aws_ses_client.init_app(application.config['AWS_SES_REGION'],
                            application.config['AWS_SES_ACCESS_KEY_ID'],
                            application.config['AWS_SES_SECRET_ACCESS_KEY'],
                            statsd_client=statsd_client)
    smtp_client.init_app(application, statsd_client=statsd_client)
    notify_celery.init_app(application)
    encryption.init_app(application)
    redis_store.init_app(application)
    performance_platform_client.init_app(application)
    clients.init_app(sms_clients=[twilio_sms_client, telstra_sms_client],
                     email_clients=[aws_ses_client, smtp_client])

    register_blueprint(application)
    register_v2_blueprints(application)

    # avoid circular imports by importing this file later
    from app.commands import setup_commands
    setup_commands(application)

    return application
Exemple #13
0
def create_app(application):
    setup_commands(application)

    from app.config import configs
    from app.views import main_blueprint

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])

    init_app(application)

    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    request_helper.init_app(application)
    notify_celery.init_app(application)

    application.register_blueprint(main_blueprint)

    return application
Exemple #14
0
def create_app(application):
    application.config.from_object(configs[application.env])

    application.url_map.converters['base64_uuid'] = Base64UUIDConverter

    init_app(application)
    init_govuk_frontend(application)
    init_jinja(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    csrf.init_app(application)
    request_helper.init_app(application)

    from app.main import main as main_blueprint
    application.register_blueprint(main_blueprint)

    # from .status import status as status_blueprint
    # application.register_blueprint(status_blueprint)

    # add_template_filters(application)

    register_errorhandlers(application)

    service_api_client.init_app(application)
Exemple #15
0
def create_app(application):
    from app.config import configs

    notify_environment = os.getenv('NOTIFY_ENVIRONMENT', 'development')

    application.config.from_object(configs[notify_environment])

    application.config['NOTIFY_APP_NAME'] = application.name
    init_app(application)
    request_helper.init_app(application)
    db.init_app(application)
    migrate.init_app(application, db=db)
    ma.init_app(application)
    zendesk_client.init_app(application)
    statsd_client.init_app(application)
    logging.init_app(application, statsd_client)
    firetext_client.init_app(application, statsd_client=statsd_client)
    loadtest_client.init_app(application, statsd_client=statsd_client)
    mmg_client.init_app(application, statsd_client=statsd_client)
    aws_sns_client.init_app(aws_region=application.config['AWS_REGION'],
                            statsd_client=statsd_client,
                            logger=application.logger)
    aws_ses_client.init_app(
        application.config['AWS_REGION'],
        logger=application.logger,
        statsd_client=statsd_client,
        email_from_domain=application.config['AWS_SES_EMAIL_FROM_DOMAIN'],
        email_from_user=application.config['AWS_SES_EMAIL_FROM_USER'],
        default_reply_to=application.config['AWS_SES_DEFAULT_REPLY_TO'],
        configuration_set=application.config['AWS_SES_CONFIGURATION_SET'],
        endpoint_url=application.config['AWS_SES_ENDPOINT_URL'])
    send_grid_client.init_app(application.config['SENDGRID_API_KEY'],
                              statsd_client=statsd_client)
    govdelivery_client.init_app(application.config['GRANICUS_TOKEN'],
                                application.config['GRANICUS_URL'],
                                statsd_client)
    twilio_sms_client.init_app(
        logger=application.logger,
        callback_notify_url_host=application.config["API_HOST_NAME"])
    aws_pinpoint_client.init_app(application.config['AWS_PINPOINT_APP_ID'],
                                 application.config['AWS_REGION'],
                                 application.logger,
                                 application.config['FROM_NUMBER'],
                                 statsd_client)
    va_profile_client.init_app(application.logger,
                               application.config['VA_PROFILE_URL'],
                               application.config['VANOTIFY_SSL_CERT_PATH'],
                               application.config['VANOTIFY_SSL_KEY_PATH'],
                               statsd_client)
    mpi_client.init_app(application.logger, application.config['MPI_URL'],
                        application.config['VANOTIFY_SSL_CERT_PATH'],
                        application.config['VANOTIFY_SSL_KEY_PATH'],
                        statsd_client)

    notify_celery.init_app(application)
    encryption.init_app(application)
    redis_store.init_app(application)
    performance_platform_client.init_app(application)
    document_download_client.init_app(application)
    clients.init_app(
        sms_clients=[
            firetext_client, mmg_client, aws_sns_client, loadtest_client,
            twilio_sms_client, aws_pinpoint_client
        ],
        email_clients=[aws_ses_client, send_grid_client, govdelivery_client])

    provider_service.init_app(
        email_provider_selection_strategy_label=application.
        config['EMAIL_PROVIDER_SELECTION_STRATEGY_LABEL'],
        sms_provider_selection_strategy_label=application.
        config['SMS_PROVIDER_SELECTION_STRATEGY_LABEL'])

    oauth_registry.init_app(application)

    jwt.init_app(application)

    register_blueprint(application)
    register_v2_blueprints(application)

    # avoid circular imports by importing this file later
    from app.commands import setup_commands
    setup_commands(application)

    CORS(application)

    return application