# -*- coding: UTF-8 -* import os import logging from dotenv import load_dotenv BASEDIR = os.path.abspath(os.path.dirname(__file__)) load_dotenv(os.path.join(BASEDIR, ".env")) class Config: """General configuration. Mostly loaded from environment via .env""" SQLALCHEMY_DATABASE_URI = None # set in subclass FLASK_ENV = None # # set in subclass SECRET_KEY = os.environ.get("SECRET_KEY") or "90e01e75831e4276a4c70d29564b425f" SQLALCHEMY_TRACK_MODIFICATIONS = False LOG_TO_STDOUT = os.environ.get("LOG_TO_STDOUT") LOG_LEVEL = getattr(logging, os.environ.get("LOG_LEVEL", "INFO"), "INFO") MAIL_SERVER = os.environ.get("MAIL_SERVER", "localhost") MAIL_PORT = int(os.environ.get("MAIL_PORT", 25)) MAIL_USE_TLS = os.environ.get("MAIL_USE_TLS") is not None MAIL_USERNAME = os.environ.get("MAIL_USERNAME") MAIL_PASSWORD = os.environ.get("MAIL_PASSWORD") LANGUAGES = ["fr", "en"] # unused for now SCODOC_ADMIN_MAIL = os.environ.get("SCODOC_ADMIN_MAIL") SCODOC_ADMIN_LOGIN = os.environ.get("SCODOC_ADMIN_LOGIN") or "admin" ADMINS = [SCODOC_ADMIN_MAIL] SCODOC_ERR_MAIL = os.environ.get("SCODOC_ERR_MAIL") # Le "from" des mails émis. Attention: peut être remplacée par la préférence email_from_addr: SCODOC_MAIL_FROM = os.environ.get("SCODOC_MAIL_FROM") or ("no-reply@" + MAIL_SERVER) BOOTSTRAP_SERVE_LOCAL = os.environ.get("BOOTSTRAP_SERVE_LOCAL") SCODOC_DIR = os.environ.get("SCODOC_DIR", "/opt/scodoc") SCODOC_VAR_DIR = os.environ.get("SCODOC_VAR_DIR", "/opt/scodoc-data") SCODOC_LOG_FILE = os.path.join(SCODOC_VAR_DIR, "log", "scodoc.log") # evite confusion avec le log nginx scodoc_error.log: SCODOC_ERR_FILE = os.path.join(SCODOC_VAR_DIR, "log", "scodoc_exc.log") # MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # Flask uploads (16Mo, en ligne avec nginx) # flask_json: JSON_ADD_STATUS = False JSON_USE_ENCODE_METHODS = True JSON_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S%z" # "%Y-%m-%dT%H:%M:%S" class ProdConfig(Config): "mode production, normalement derrière nginx/gunicorn" FLASK_ENV = "production" DEBUG = False TESTING = False SQLALCHEMY_DATABASE_URI = ( os.environ.get("SCODOC_DATABASE_URI") or "postgresql:///SCODOC" ) PREFERRED_URL_SCHEME = "https" class DevConfig(Config): "mode développement" FLASK_ENV = "development" DEBUG = True TESTING = False SQLALCHEMY_DATABASE_URI = ( os.environ.get("SCODOC_DATABASE_URI") or "postgresql:///SCODOC_DEV" ) SECRET_KEY = os.environ.get("DEV_SECRET_KEY") or "bb3faec7d9a34eb68a8e3e710087d87a" # pour le avoir url_for dans le shell: # SERVER_NAME = os.environ.get("SCODOC_TEST_SERVER_NAME") or "localhost" class TestConfig(DevConfig): "Pour les tests unitaires" TESTING = True DEBUG = False SQLALCHEMY_DATABASE_URI = ( os.environ.get("SCODOC_TEST_DATABASE_URI") or "postgresql:///SCODOC_TEST" ) SERVER_NAME = os.environ.get("SCODOC_TEST_SERVER_NAME") or "test.gr" DEPT_TEST = "TEST_" # nom du département, ne pas l'utiliser pour un "vrai" SECRET_KEY = os.environ.get("TEST_SECRET_KEY") or "c7ecff5db1594c208f573ff30e0f6bca" class TestAPIConfig(Config): "Pour les tests de l'API" FLASK_ENV = "test_api" TESTING = False DEBUG = True SQLALCHEMY_DATABASE_URI = ( os.environ.get("SCODOC_TEST_API_DATABASE_URI") or "postgresql:///SCODOC_TEST_API" ) DEPT_TEST = "TAPI_" # nom du département, ne pas l'utiliser pour un "vrai" SECRET_KEY = os.environ.get("TEST_SECRET_KEY") or "c7ecff5db15946789Hhahbh88aja175" mode = os.environ.get("FLASK_ENV", "production") if mode == "production": RunningConfig = ProdConfig elif mode == "development": RunningConfig = DevConfig elif mode == "test": RunningConfig = TestConfig elif mode == "test_api": RunningConfig = TestAPIConfig