import os import logging class Config: ''' ### Flask ### ''' SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string' ''' ### Flask-Mail ### ''' MAIL_SERVER = os.environ.get('MAIL_SERVER') MAIL_PORT = int(os.environ.get('MAIL_PORT')) MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS').lower() == 'true' MAIL_USERNAME = os.environ.get('MAIL_USERNAME') MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER') ''' ### Flask-SQLAlchemy ### ''' SQLALCHEMY_ENGINE_OPTIONS = {'pool_size': 30, 'pool_timeout': 30} SQLALCHEMY_TRACK_MODIFICATIONS = False ''' ### Opaque ### ''' NOPAQUE_ADMIN = os.environ.get('NOPAQUE_ADMIN') NOPAQUE_STORAGE = os.environ.get('NOPAQUE_STORAGE') @staticmethod def init_app(app): pass class DevelopmentConfig(Config): ''' ### Flask ### ''' DEBUG = True ''' ### Flask-SQLAlchemy ### ''' SQLALCHEMY_DATABASE_URI = 'postgresql://{}:{}@db/{}'.format( os.environ.get('POSTGRES_USER'), os.environ.get('POSTGRES_PASSWORD'), os.environ.get('POSTGRES_DB_NAME') ) if not os.path.isfile('logs/nopaque.log'): file_path = os.path.join(os.getcwd(), 'logs/nopaque.log') log = open(file_path, 'w+') log.close() if os.environ.get('FLASK_CONFIG') == 'development': log_format = ("%(asctime)s - %(levelname)s - %(name)s - " "%(filename)s - %(lineno)d - %(message)s") logging.basicConfig(filename='logs/nopaque.log', level='WARNING', format=log_format, datefmt='%Y-%m-%d %H:%M:%S', filemode='w') logger = logging.getLogger(__name__) logger.warning('Logging has started with level WARNING.' ' From development config.') class TestingConfig(Config): ''' ### Flask ### ''' TESTING = True ''' ### Flask-SQLAlchemy ### ''' SQLALCHEMY_DATABASE_URI = 'sqlite://' ''' ### Flask-WTF ### ''' WTF_CSRF_ENABLED = False class ProductionConfig(Config): ''' ### Flask-SQLAlchemy ### ''' SQLALCHEMY_DATABASE_URI = 'postgresql://{}:{}@db/{}'.format( os.environ.get('POSTGRES_USER'), os.environ.get('POSTGRES_PASSWORD'), os.environ.get('POSTGRES_DB_NAME') ) if not os.path.isfile('logs/nopaque.log'): file_path = os.path.join(os.getcwd(), 'logs/nopaque.log') log = open(file_path, 'w+') log.close() if os.environ.get('FLASK_CONFIG') == 'production': log_format = ("%(asctime)s - %(levelname)s - %(name)s - " "%(filename)s - %(lineno)d - %(message)s") logging.basicConfig(filename='logs/nopaque.log', level='ERROR', format=log_format, datefmt='%Y-%m-%d %H:%M:%S', filemode='w') logger = logging.getLogger(__name__) logger.error('Logging has started with level ERROR.' ' From production config.') config = { 'development': DevelopmentConfig, 'testing': TestingConfig, 'production': ProductionConfig, 'default': DevelopmentConfig }