Example #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
Example #2
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
Example #3
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
Example #4
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()
Example #5
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
Example #6
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
def create_app():
    application = Flask(
        __name__,
        static_folder=str(DIST),
    )

    from app.config import configs
    environment = os.getenv('NOTIFY_ENVIRONMENT', 'development')
    application.config.from_object(configs[environment])

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

    from app.commands import setup_commands
    setup_commands(application)

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

    return application
Example #8
0
def create_app(application):
    setup_commands(application)

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])
    asset_fingerprinter._cdn_domain = application.config['ASSET_DOMAIN']
    asset_fingerprinter._asset_root = application.config['ASSET_PATH']

    application.config["BABEL_DEFAULT_LOCALE"] = "en"
    babel = Babel(application)

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

    init_app(application)

    for client in (

        # Gubbins
        csrf,
        login_manager,
        proxy_fix,
        request_helper,
        cache,

        # API clients
        api_key_api_client,
        billing_api_client,
        complaint_api_client,
        email_branding_client,
        events_api_client,
        inbound_number_client,
        invite_api_client,
        job_api_client,
        letter_branding_client,
        letter_jobs_client,
        notification_api_client,
        org_invite_api_client,
        organisations_client,
        platform_stats_api_client,
        provider_client,
        service_api_client,
        status_api_client,
        template_folder_api_client,
        template_statistics_client,
        template_api_prefill_client,
        user_api_client,

        # External API clients
        antivirus_client,
        statsd_client,
        zendesk_client,
        redis_client

    ):
        client.init_app(application)

    logging.init_app(application, statsd_client)

    login_manager.login_view = 'main.sign_in'
    login_manager.login_message_category = 'default'
    login_manager.session_protection = None
    login_manager.anonymous_user = AnonymousUser

    # make sure we handle unicode correctly
    redis_client.redis_store.decode_responses = True

    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)

    setup_event_handlers()
Example #9
0
def create_app(application):
    setup_commands(application)

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])
    asset_fingerprinter._asset_root = application.config['ASSET_PATH']

    init_app(application)

    init_govuk_frontend(application)
    init_jinja(application)

    for client in (
        # Gubbins
        # Note, metrics purposefully first so we start measuring response times as early as possible before any
        # other `app.before_request` handlers (introduced by any of these clients) are processed (which would
        # otherwise mean we aren't measuring the full response time)
        metrics,
        csrf,
        login_manager,
        proxy_fix,
        request_helper,

        # API clients
        api_key_api_client,
        billing_api_client,
        broadcast_message_api_client,
        contact_list_api_client,
        complaint_api_client,
        email_branding_client,
        events_api_client,
        inbound_number_client,
        invite_api_client,
        job_api_client,
        letter_branding_client,
        letter_jobs_client,
        notification_api_client,
        org_invite_api_client,
        organisations_client,
        platform_stats_api_client,
        provider_client,
        service_api_client,
        status_api_client,
        template_folder_api_client,
        template_statistics_client,
        upload_api_client,
        user_api_client,

        # External API clients
        antivirus_client,
        redis_client,
        zendesk_client,

    ):
        client.init_app(application)

    logging.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

    # make sure we handle unicode correctly
    redis_client.redis_store.decode_responses = True

    setup_blueprints(application)

    add_template_filters(application)

    register_errorhandlers(application)

    setup_event_handlers()
Example #10
0
def create_app(application):
    setup_commands(application)

    notify_environment = os.environ["NOTIFY_ENVIRONMENT"]

    application.config.from_object(configs[notify_environment])
    asset_fingerprinter._cdn_domain = application.config["ASSET_DOMAIN"]
    asset_fingerprinter._asset_root = urljoin(
        application.config["ADMIN_BASE_URL"], application.config["ASSET_PATH"])

    application.config["BABEL_DEFAULT_LOCALE"] = "en"
    babel = Babel(application)

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

    init_app(application)

    for client in (
            # Gubbins
            csrf,
            login_manager,
            proxy_fix,
            request_helper,
            cache,
            # API clients
            api_key_api_client,
            billing_api_client,
            complaint_api_client,
            email_branding_client,
            events_api_client,
            inbound_number_client,
            invite_api_client,
            job_api_client,
            letter_branding_client,
            letter_jobs_client,
            notification_api_client,
            org_invite_api_client,
            organisations_client,
            platform_stats_api_client,
            provider_client,
            service_api_client,
            status_api_client,
            template_folder_api_client,
            template_statistics_client,
            template_api_prefill_client,
            user_api_client,
            # External API clients
            antivirus_client,
            statsd_client,
            zendesk_client,
            redis_client,
    ):
        client.init_app(application)

    logging.init_app(application, statsd_client)

    # Log a warning message if Redis is not enabled
    if not application.config["REDIS_ENABLED"]:
        application.logger.warning(
            "Redis is not enabled. Some features may not be supported. "
            "If you want to enable Redis, look at REDIS_* config variables.")

    login_manager.login_view = "main.sign_in"
    login_manager.login_message_category = "default"
    login_manager.session_protection = None
    login_manager.anonymous_user = AnonymousUser

    # make sure we handle unicode correctly
    redis_client.redis_store.decode_responses = True

    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)

    setup_event_handlers()
Example #11
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
Example #12
0
def create_app(application):
    setup_commands(application)

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])
    asset_fingerprinter._asset_root = application.config['ASSET_PATH']

    init_app(application)

    init_govuk_frontend(application)
    init_jinja(application)

    for client in (

            # Gubbins
            csrf,
            login_manager,
            proxy_fix,
            request_helper,

            # API clients
            api_key_api_client,
            billing_api_client,
            complaint_api_client,
            email_branding_client,
            events_api_client,
            inbound_number_client,
            invite_api_client,
            job_api_client,
            letter_branding_client,
            letter_jobs_client,
            notification_api_client,
            org_invite_api_client,
            organisations_client,
            platform_stats_api_client,
            provider_client,
            service_api_client,
            status_api_client,
            template_folder_api_client,
            template_statistics_client,
            user_api_client,

            # External API clients
            antivirus_client,
            statsd_client,
            zendesk_client,
            redis_client):
        client.init_app(application)

    logging.init_app(application, statsd_client)

    login_manager.login_view = 'main.sign_in'
    login_manager.login_message_category = 'default'
    login_manager.session_protection = None
    login_manager.anonymous_user = AnonymousUser

    # make sure we handle unicode correctly
    redis_client.redis_store.decode_responses = True

    setup_blueprints(application)

    add_template_filters(application)

    register_errorhandlers(application)

    setup_event_handlers()
Example #13
0
def create_app(application):
    setup_commands(application)

    notify_environment = os.environ['NOTIFY_ENVIRONMENT']

    application.config.from_object(configs[notify_environment])

    init_app(application)

    for client in (

            # Gubbins
            csrf,
            login_manager,
            proxy_fix,
            request_helper,

            # API clients
            api_key_api_client,
            billing_api_client,
            complaint_api_client,
            email_branding_client,
            events_api_client,
            inbound_number_client,
            invite_api_client,
            job_api_client,
            letter_jobs_client,
            notification_api_client,
            org_invite_api_client,
            organisations_client,
            platform_stats_api_client,
            provider_client,
            service_api_client,
            status_api_client,
            support_api_client,
            template_statistics_client,
            user_api_client,
            callback_failures_client,

            # External API clients
            statsd_client,
            deskpro_client):
        client.init_app(application)

    logging.init_app(application, statsd_client)

    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)

    add_template_filters(application)

    register_errorhandlers(application)

    setup_event_handlers()