pdc_config.py 4.02 KB
import sys
import os

try:
    from db_config import *
except ImportError:
    sys.stderr.write("ERROR: Please set a db_config.py file in you PYTHON_PATH\n")
    sys.stderr.write("ERROR: See INSTALL.md for more info\n")
    sys.exit(-1)


#
# SQLALCHEMY_DATABASE_URI will default to 'sqlite:///:memory:' if not set
#

class Config(object):
    SECRET_KEY = 'dev'
    PDC_ROOT_DIR = os.path.abspath(os.path.dirname(__file__))

    # Please change the following to fit you own site parameters
    #
    PDC_APP_NAME = 'Plan de Charge'
    PDC_SITE_NAME = 'NO_SITE'  # choose among DEV, IRAP, LESIA, LAM ... will display on page's title
    PDC_SITE_CLASS = 'public-icon'  # choose among admin-icon, public-icon, dev-icon, see more in app/static/style.css
    PDC_LOGS_LEVEL = 'ERROR'  # choose within  DEBUG, INFO, WARN, ERROR ( more in the python logging module )
    PDC_LOGS_DIR = os.path.join(PDC_ROOT_DIR, 'logs')
    PDC_LOGS_FILE = os.path.join(PDC_LOGS_DIR, 'pdc.log')
    PDC_RESOURCES_DIR = os.path.join(PDC_ROOT_DIR, 'resources')
    PDC_DB_DATA_DIR = os.path.join(PDC_RESOURCES_DIR, 'db-contents')

    # Uncomment for role access control
    #
    #   if True, will disable any role control on routes
    #   note that this doesnt disable the @login_required
    #
    # ROLE_DISABLED = False

    # Uncomment for site access control
    #
    #   if True, will force login access on any site page 
    #   note that this doesnt disable the @login_required 
    #
    # SITE_LOGIN = False

    #
    # No need to Edit below
    # ( but keep reading )
    #

    # You can force logging to stdout in production environment
    # (make sure your httpd/wsgi server can redirect to log files)
    LOG_TO_STDOUT = os.environ.get('LOG_TO_STDOUT')
    if LOG_TO_STDOUT and LOG_TO_STDOUT.upper() == "true".upper():
        LOG_TO_STDOUT = True

    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # Trying to set specific db uri from ./db_config.py
    try:
        SQLALCHEMY_DATABASE_URI = sqlalchemy_database_uri
    except NameError:
        SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
                                  'sqlite:///' + os.path.join(PDC_ROOT_DIR, 'pdc.db')

    try:
        LESIA_AGENTS_DB_URI = mysql_lesia_uri
    except NameError:
        LESIA_AGENTS_DB_URI = os.environ.get('LESIA_AGENTS_DB_URI') or \
                              'sqlite:///' + os.path.join(PDC_ROOT_DIR, 'lesia.db')

    # TODO: to be set in a app_init() method so we can see if we are prod, dev or testing,
    #  then set the VERSION accordingly
    with open(os.path.join(PDC_ROOT_DIR, 'VERSION.txt')) as version_file:
        VERSION = version_file.read().strip()


# Production configuration
#
class ProdConfig(Config):
    TESTING = False
    DEBUG = False


# Development configuration
#
class DevConfig(Config):
    DEBUG = True

    # Trying to set specific db uri from ./db_config.py
    try:
        SQLALCHEMY_DATABASE_URI = sqlalchemy_devdb_uri
    except NameError:
        SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
                                  'sqlite:///' + os.path.join(Config.PDC_ROOT_DIR, 'pdc-dev.db')
    # ignores @login_required decorator
    LOGIN_DISABLED = True
    # ignores @role_required decorator
    ROLE_DISABLED = True

    from datetime import datetime
    import re
    date = datetime.now().strftime("%y%m%d%H%M")
    VERSION = re.sub(r"^(\d\.\d)\..*$", r"\1" + f".pre-{date}", Config.VERSION)


# Testing configuration
#
class TestConfig(Config):
    TESTING = True
    DEBUG = True
    PDC_LOGS_LEVEL = 'INFO'  # choose within  DEBUG, INFO, WARN, ERROR ( more levels in logging module )

    # Trying to set specific db uri from ./db_config.py
    try:
        SQLALCHEMY_DATABASE_URI = sqlalchemy_testdb_uri
    except NameError:
        SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
                                  'sqlite:///' + os.path.join(Config.PDC_ROOT_DIR, 'pdc-test.db')
    # ignores @login_required decorator
    LOGIN_DISABLED = True
    # ignores @role_required decorator
    ROLE_DISABLED = True

# vim: tw=0