def check_testing_configuration(testing, app): if testing: app.config['SQLALCHEMY_ECHO'] = False app.config['TESTING'] = testing app.config['NPLUSONE_LOGGER'] = logging.getLogger('faraday.nplusone') app.config['NPLUSONE_LOG_LEVEL'] = logging.ERROR app.config['NPLUSONE_RAISE'] = True NPlusOne(app)
def create_app(config_name): application = Flask(__name__) application.config['DM_ENVIRONMENT'] = config_name init_app( application, configs[config_name], db=db, search_api_client=search_api_client ) if not application.config['DM_API_AUTH_TOKENS']: raise Exception("No DM_API_AUTH_TOKENS provided") # FIXME: The service broker adds a 'reconnect' parameter that's rejected by Postgres and # doesn't seem to be in the Postgres documentation anyway. We need to patch the broker to fix # the username stability issue anyway. import os if 'DATABASE_URL' in os.environ: application.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL'].replace('reconnect=true', '') url_prefix = application.config['URL_PREFIX'] url_prefix_v2 = application.config['URL_PREFIX_V2'] from .main import main as main_blueprint application.register_blueprint(main_blueprint, url_prefix=url_prefix) from .status import status as status_blueprint application.register_blueprint(status_blueprint, url_prefix=url_prefix) from .api import api as api_blueprint application.register_blueprint(api_blueprint, url_prefix=url_prefix_v2) from .admin import blueprint as admin_blueprint application.register_blueprint(admin_blueprint.admin) application.json_encoder = CustomEncoder # maximum POST request length http://flask.pocoo.org/docs/0.12/patterns/fileuploads/#improving-uploads application.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024 # 32 megabytes swag.init_app(application) if application.config['DEBUG']: # enable raise to raise exception on ORM misconfigured queries # application.config['NPLUSONE_RAISE'] = True application.config['NPLUSONE_LOGGER'] = logging.getLogger('app.nplusone') application.config['NPLUSONE_LOG_LEVEL'] = logging.ERROR NPlusOne(application) application.wsgi_app = SQLTapMiddleware(application.wsgi_app) return application
def create_app(test_config: Optional[dict] = None) -> App: app = App("TEMPLATE") # load config configure(app=app, test_config=test_config) # extensions CORS(app) configure_database(app) api.init_app(app) # flask-smorest NPlusOne(app) # CLI manager = Manager(app) manager.add_command("db", MigrateCommand) # migrations under "flask db" init_cli(app, manager) init_xray(app) init_auth(app) return app
def create_app(test_config=None) -> App: app = App("supbackend") # load config configure(app=app, test_config=test_config) # extensions CORS(app) configure_database(app) api.init_app(app) # flask-smorest NPlusOne(app) CRUD(app) # CLI manager = Manager(app) manager.add_command("db", MigrateCommand) # migrations under "flask db" init_cli(app, manager) init_xray(app) init_auth(app) stripe.api_key = app.config["STRIPE_KEY_SECRET"] return app
import codecs import unittest import subprocess from webtest import TestApp from nplusone.ext.flask_sqlalchemy import NPlusOne import manage from webservices import rest from webservices import __API_VERSION__ TEST_CONN = os.getenv('SQLA_TEST_CONN', 'postgresql:///cfdm_unit_test') rest.app.config['NPLUSONE_RAISE'] = True NPlusOne(rest.app) def _reset_schema(): rest.db.engine.execute('drop schema if exists public cascade;') rest.db.engine.execute('create schema public;') class BaseTestCase(unittest.TestCase): @classmethod def setUpClass(cls): rest.app.config['TESTING'] = True rest.app.config['SQLALCHEMY_DATABASE_URI'] = TEST_CONN rest.app.config['PRESERVE_CONTEXT_ON_EXCEPTION'] = False cls.app = rest.app.test_client()
def wrapper(app): return NPlusOne(app)
def create_app(config_name): application = Flask(__name__) application.config['DM_ENVIRONMENT'] = config_name init_app(application, configs[config_name], db=db, search_api_client=search_api_client) if application.config['REDIS_SESSIONS']: vcap_services = parse_vcap_services() redis_opts = { 'ssl': application.config['REDIS_SSL'], 'ssl_ca_certs': application.config['REDIS_SSL_CA_CERTS'], 'ssl_cert_reqs': application.config['REDIS_SSL_HOST_REQ'] } if vcap_services and 'redis' in vcap_services: redis_opts['host'] = vcap_services['redis'][0]['credentials'][ 'hostname'] redis_opts['port'] = vcap_services['redis'][0]['credentials'][ 'port'] redis_opts['password'] = vcap_services['redis'][0]['credentials'][ 'password'] else: redis_opts['host'] = application.config['REDIS_SERVER_HOST'] redis_opts['port'] = application.config['REDIS_SERVER_PORT'] redis_opts['password'] = application.config[ 'REDIS_SERVER_PASSWORD'] session_store = RedisStore(redis.StrictRedis(**redis_opts)) KVSessionExtension(session_store, application) if not application.config['DM_API_AUTH_TOKENS']: raise Exception("No DM_API_AUTH_TOKENS provided") # FIXME: The service broker adds a 'reconnect' parameter that's rejected by Postgres and # doesn't seem to be in the Postgres documentation anyway. We need to patch the broker to fix # the username stability issue anyway. import os if 'DATABASE_URL' in os.environ: application.config['SQLALCHEMY_DATABASE_URI'] = os.environ[ 'DATABASE_URL'].replace('reconnect=true', '') url_prefix = application.config['URL_PREFIX'] url_prefix_v2 = application.config['URL_PREFIX_V2'] from .main import main as main_blueprint application.register_blueprint(main_blueprint, url_prefix=url_prefix) from .status import status as status_blueprint application.register_blueprint(status_blueprint, url_prefix=url_prefix) from .api import api as api_blueprint application.register_blueprint(api_blueprint, url_prefix=url_prefix_v2) from .admin import blueprint as admin_blueprint application.register_blueprint(admin_blueprint.admin) application.json_encoder = CustomEncoder # maximum POST request length http://flask.pocoo.org/docs/0.12/patterns/fileuploads/#improving-uploads application.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024 # 32 megabytes swag.init_app(application) if application.config['DEBUG']: # enable raise to raise exception on ORM misconfigured queries # application.config['NPLUSONE_RAISE'] = True application.config['NPLUSONE_LOGGER'] = logging.getLogger( 'app.nplusone') application.config['NPLUSONE_LOG_LEVEL'] = logging.ERROR NPlusOne(application) application.wsgi_app = SQLTapMiddleware(application.wsgi_app) return application