"""Application configuration.""" import logging import os from os.path import abspath from os.path import dirname from os.path import join from os.path import pardir from dotenv import load_dotenv from sqlalchemy.pool import NullPool from sqlalchemy.pool import StaticPool # Load environment variables from a .env file dotenv_path = abspath(join(dirname(__file__), pardir, '.env')) load_dotenv(dotenv_path) # Service information SERVICE_NAME = 'ows-salessheets' SERVICE_VERSION = '1.0.0' # Production environment PROD_ENVIRONMENT = 'prod' DEV_ENVIRONMENT = 'dev' QA_ENVIRONMENT = 'qa' TEST_ENVIRONMENT = 'test' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) # Queue configuration SALESSHEETS_SQS_QUEUE = '{}-sales_sheets_generation'.format(ENVIRONMENT) # S3 configuration SALESSHEETS_S3_BUCKET = '{}-orcdbucket'.format(ENVIRONMENT) BULK_SALESSHEETS_S3_DIRECTORY = os.environ.get('BULK_SALESSHEETS_S3_DIRECTORY') # Database # -------- # Connection string AR_DB_CREDENTIALS = { 'database': os.environ.get('AR_MYSQL_DATABASE'), 'host': os.environ.get('AR_MYSQL_HOST'), 'password': os.environ.get('AR_MYSQL_PASSWORD'), 'port': os.environ.get('AR_MYSQL_PORT'), 'user': os.environ.get('AR_MYSQL_USER') } if ENVIRONMENT == TEST_ENVIRONMENT: AR_DB_CONNECTION_STRING = 'sqlite://' else: AR_DB_CONNECTION_STRING = ( 'mysql+pymysql://{user}:{password}@{host}/{db}'.format( user=AR_DB_CREDENTIALS.get('user'), password=AR_DB_CREDENTIALS.get('password'), host=AR_DB_CREDENTIALS.get('host'), db=AR_DB_CREDENTIALS.get('database'))) SS_DB_CREDENTIALS = { 'database': os.environ.get('SS_MYSQL_DATABASE'), 'host': os.environ.get('SS_MYSQL_HOST'), 'password': os.environ.get('SS_MYSQL_PASSWORD'), 'port': os.environ.get('SS_MYSQL_PORT'), 'user': os.environ.get('SS_MYSQL_USER') } if ENVIRONMENT == TEST_ENVIRONMENT: SS_DB_CONNECTION_STRING = 'sqlite://' else: SS_DB_CONNECTION_STRING = ( 'mysql+pymysql://{user}:{password}@{host}/{db}'.format( user=SS_DB_CREDENTIALS.get('user'), password=SS_DB_CREDENTIALS.get('password'), host=SS_DB_CREDENTIALS.get('host'), db=SS_DB_CREDENTIALS.get('database'))) if ENVIRONMENT == TEST_ENVIRONMENT: POOL_CLASS = StaticPool DB_CONNECT_ARGS = {'check_same_thread': False} else: POOL_CLASS = NullPool DB_CONNECT_ARGS = {'charset': 'utf8mb4'} # Errors and loggers SENTRY = os.environ.get('SENTRY_DSN') or None LOGGER_DSN = os.environ.get('LOGGER_DSN') LOGGER_LEVEL = logging.INFO LOGGER_NAME = 'ows1' # Generic handlers HEALTH_CHECK = '/hello/' # Override default config settings for particular environments # ------------------------------------------------------------ # Dev if ENVIRONMENT == DEV_ENVIRONMENT: DEBUG = 1 SALESSHEETS_S3_BUCKET = os.environ.get( 'DEV_SALESSHEETS_S3_BUCKET', SALESSHEETS_S3_BUCKET)