"""Flow settings.""" from collections import defaultdict import datetime import decimal import os APP_NAME = 'swf-accounting' START_TO_CLOSE_TIMEOUT = 18000 ENVIRONMENT = os.getenv('Environment') SNS_SUCCESS_TOPIC = os.getenv('SNS_SUCCESS_TOPIC') SNS_FAIL_TOPIC = os.getenv('SNS_FAIL_TOPIC') OWS_MANUAL_ADJUSTMENT = 'ows-manual-adjustment' PHYSICAL_TRANSACTION_TYPES = ('PS', 'RE') # art_relations database connection setup. DB_CONNECTION_PROPERTIES = ( 'MYSQL_USER', 'MYSQL_PASSWORD', 'MYSQL_HOST', 'MYSQL_PORT', ) DB_CREDENTIALS = defaultdict(dict) DB_ART_RELATIONS_NAME = os.getenv('DB_ART_RELATIONS_NAME') DB_ACC_FLAT_NAME = os.getenv('DB_ACCOUNTING_FLAT_NAME') DATABASES = [db_name for db_name in (DB_ART_RELATIONS_NAME, DB_ACC_FLAT_NAME) if db_name] for db_name in DATABASES: DB_CREDENTIALS[db_name]['MYSQL_DATABASE'] = db_name for connection_property in DB_CONNECTION_PROPERTIES: db_connection_property_name = '{}_{}'.format( db_name, connection_property) property_value = os.environ.get(db_connection_property_name) DB_CREDENTIALS[db_name][connection_property] = property_value DATABASE_CONNECTION_TEMPLATE = ( 'mysql+pymysql://{user}:{password}@{host}:{port}/{database}') DB_CONNECTION_STRINGS = {} for db_name, db_properties in DB_CREDENTIALS.items(): connection_str = DATABASE_CONNECTION_TEMPLATE.format( user=db_properties.get('MYSQL_USER'), password=db_properties.get('MYSQL_PASSWORD'), host=db_properties.get('MYSQL_HOST'), port=db_properties.get('MYSQL_PORT'), database=db_properties.get('MYSQL_DATABASE')) DB_CONNECTION_STRINGS[db_name] = connection_str DB_CONNECT_ARGS = {'charset': 'utf8'} DYNAMODB_TABLE = '{env}-reserve-payout-calculations'.format(env=ENVIRONMENT) DYNAMODB_TTL = datetime.timedelta(days=7) DECIMAL_QUANTIZE = decimal.Decimal('.000001') DECIMAL_ROUNDING = decimal.ROUND_HALF_UP SQS_QUEUE = '{env}-reserve-payout-calculations'.format(env=ENVIRONMENT) SQS_MAX_BATCH_SIZE = 10 SQS_VISIBILITY_TIMEOUT = 10 OWS_MANUAL_ADJUSTMENT_NUM_RETRIES = os.environ.get( 'OWS_MANUAL_ADJUSTMENT_NUM_RETRIES', 1) OWS_MANUAL_ADJUSTMENT_TIME_TO_SLEEP = 10 HTTP_CODES_TO_RETRY = (502, 503, 504)