# -*- coding: utf-8 -*- """Application configuration.""" import os from datetime import timedelta class Config(object): """Base configuration.""" SECRET_KEY = os.environ['SECRET_KEY'] API_PASS = os.environ['API_PASS'] APP_DIR = os.path.abspath(os.path.dirname(__file__)) # This directory PROJECT_ROOT = os.path.abspath(os.path.join(APP_DIR, os.pardir)) DEBUG_TB_INTERCEPT_REDIRECTS = False CACHE_TYPE = 'simple' # Can be "memcached", "redis", etc. SQLALCHEMY_TRACK_MODIFICATIONS = False JWT_AUTH_USERNAME_KEY = 'email' JWT_AUTH_HEADER_PREFIX = 'Token' APISPEC_TITLE = 'MahssageBus API' APISPEC_VERSION = 'v0.1' APISPEC_OAS_VERSION = '3.0.0' RABBITMQ_HOST = os.environ.get("RABBITMQ_HOST", "localhost") class ProdConfig(Config): """Production configuration.""" ENV = 'prod' DEBUG = False DB_NAME = os.environ.get('DB_NAME', 'prod.db') DB_PATH = os.environ.get('DB_PATH', os.path.join(Config.PROJECT_ROOT, DB_NAME)) SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', f'sqlite:///{DB_PATH}') class DevConfig(Config): """Development configuration.""" ENV = 'dev' DEBUG = True DB_NAME = 'dev.db' # Put the db file in project root DB_PATH = os.path.join(Config.PROJECT_ROOT, DB_NAME) SQLALCHEMY_DATABASE_URI = f'sqlite:///{DB_PATH}' CACHE_TYPE = 'simple' # Can be "memcached", "redis", etc. JWT_ACCESS_TOKEN_EXPIRES = timedelta(60 * 60) class TestConfig(Config): """Test configuration.""" TESTING = True DEBUG = True SQLALCHEMY_DATABASE_URI = 'sqlite://' # For faster tests; needs at least 4 to avoid "ValueError: Invalid rounds" BCRYPT_LOG_ROUNDS = 4