PyJeeves/pyjeeves/config.py

70 lines
2.4 KiB
Python

from logging.config import dictConfig
import os
import yaml
config = {
'alembic': {
'script_location': 'migrations',
'sqlalchemy.url': ''},
'databases': {
'meta': {},
'raw': {}},
'logging': {
'formatters': {
'simpleFormatter': {
'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'}},
'handlers': {
'consoleHandler': {
'class': 'logging.StreamHandler',
'formatter': 'simpleFormatter',
'level': 'DEBUG',
'stream': 'ext://sys.stdout'},
'fileHandler': {
'class': 'logging.FileHandler',
'filename': 'pyjeeves.log',
'formatter': 'simpleFormatter',
'level': 'INFO'}},
'loggers': {
'PyJeeves': {'handlers': ['fileHandler'],
'level': 'DEBUG'},
'alembic': {'handlers': ['fileHandler'],
'level': 'INFO'},
'sqlalchemy': {'handlers': ['fileHandler'],
'level': 'WARN',
'qualname': 'sqlalchemy.engine'}},
'root': {'handlers': ['consoleHandler'], 'level': 'DEBUG'},
'version': 1},
'sync_interval': 60}
config['debug'] = os.getenv('ENVIRONEMENT') == 'DEV'
DB_CONTAINER = os.getenv('APPLICATION_DB_CONTAINER', 'db')
config['databases']['raw'] = {
'user': os.getenv('JEEVES_USER', 'jvsdbo'),
'pw': os.getenv('JEEVES_PW', ''),
'host': os.getenv('JEEVES_HOST', ''),
'port': os.getenv('JEEVES_PORT', 1433),
'db': os.getenv('JEEVES_DB', ''),
}
config['databases']['meta'] = {
'user': os.getenv('META_MYSQL_USER', 'pyjeeves'),
'pw': os.getenv('META_MYSQL_PW', ''),
'host': os.getenv('META_MYSQL_HOST', DB_CONTAINER),
'port': os.getenv('META_MYSQL_PORT', 3306),
'db': os.getenv('META_MYSQL_DB', 'pyjeeves'),
}
# DB_URI = 'postgresql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s' % POSTGRES
config['alembic']['sqlalchemy.url'] = (
'mysql+pymysql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s?charset=utf8mb4' %
config['databases']['meta'])
try:
with open("config.yml", 'r') as ymlfile:
file_config = yaml.load(ymlfile, Loader=yaml.FullLoader)
config = {**config, **file_config} # Syntax introduced in Python 3.5
except IOError:
pass
dictConfig(config['logging'])