import os from pathlib import Path from dotenv import load_dotenv load_dotenv('../.env') class Config(object): """Basic App Configuration""" APP_HOST = '0.0.0.0' DATA = './data/' DEBUG = False TESTING = False SECRET_KEY = os.getenv('SECRET_KEY') SERVER_NAME = os.getenv('SERVER_NAME') SESSION_COOKIE_SECURE = True """Email Engine Configuration""" MAIL_SERVER = os.getenv('MAIL_SERVER') MAIL_PORT = int(os.getenv('MAIL_PORT') or 25) MAIL_USE_TLS = False MAIL_USE_SSL = False MAIL_DEBUG = False MAIL_USERNAME = os.getenv('MAIL_USERNAME') MAIL_PASSWORD = os.getenv('MAIL_PASSWORD') MAIL_DEFAULT_SENDER = os.getenv('MAIL_DEFAULT_SENDER') MAIL_MAX_EMAILS = int(os.getenv('MAIL_MAX_EMAILS') or 25) MAIL_SUPPRESS_SEND = False MAIL_ASCII_ATTACHMENTS = bool(os.getenv('MAIL_ASCII_ATTACHMENTS') or True) """Database Driver Configuration""" DATABASE_TYPE = os.getenv('DATABASE_TYPE') or 'SQLite' SQLALCHEMY_TRACK_MODIFICATIONS = False if DATABASE_TYPE.lower() == 'mysql' and os.getenv('MYSQL_DATABASE') and os.getenv('MYSQL_USER') and os.getenv('MYSQL_PASSWORD'): DATABASE_HOST = os.getenv('DATABASE_HOST') or 'localhost' DATABASE_PORT = int(os.getenv('DATABASE_PORT') or 3306) MYSQL_DATABASE = os.getenv('MYSQL_DATABASE') MYSQL_USER = os.getenv('MYSQL_USER') MYSQL_PASSWORD = os.getenv('MYSQL_PASSWORD') SQLALCHEMY_DATABASE_URI = f'mysql+pymysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{MYSQL_DATABASE}' else: SQLALCHEMY_DATABASE_URI = f'sqlite:///{Path(os.path.abspath(f"{DATA}/db.sqlite"))}' class Production(Config): pass class Development(Config): APP_HOST = '127.0.0.1' DEBUG = True SERVER_NAME = '127.0.0.1:5000' SESSION_COOKIE_SECURE = False MAIL_SERVER = 'localhost' MAIL_DEBUG = True MAIL_SUPPRESS_SEND = False class Testing(Development): TESTING = True SESSION_COOKIE_SECURE = False MAIL_SERVER = os.getenv('MAIL_SERVER') MAIL_DEBUG = True MAIL_SUPPRESS_SEND = False