mirror of
https://github.com/LukeHagar/pypistats.dev.git
synced 2025-12-06 12:47:48 +00:00
77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
"""Application configuration."""
|
|
import json
|
|
import os
|
|
|
|
|
|
# For local use.
|
|
def load_env_vars(env="dev"):
|
|
"""Load environment variables."""
|
|
local_path = os.path.join(
|
|
os.path.dirname(os.path.abspath(__file__)),
|
|
"secret",
|
|
f"env_vars_{env}.json")
|
|
for key, value in json.load(open(local_path, 'r')).items():
|
|
os.environ[key] = value
|
|
|
|
|
|
def get_db_uri(env):
|
|
"""Get the database URI."""
|
|
return \
|
|
"postgresql://{username}:{password}@{host}:{port}/{dbname}".format(
|
|
username=os.environ.get("POSTGRESQL_USERNAME"),
|
|
password=os.environ.get("POSTGRESQL_PASSWORD"),
|
|
host=os.environ.get("POSTGRESQL_HOST"),
|
|
port=os.environ.get("POSTGRESQL_PORT"),
|
|
dbname=os.environ.get("POSTGRESQL_DBNAME"),
|
|
)
|
|
|
|
|
|
class Config(object):
|
|
"""Base configuration."""
|
|
|
|
APP_DIR = os.path.abspath(os.path.dirname(__file__))
|
|
GITHUB_CLIENT_ID = os.environ.get("GITHUB_CLIENT_ID")
|
|
GITHUB_CLIENT_SECRET = os.environ.get("GITHUB_CLIENT_SECRET")
|
|
PROJECT_ROOT = os.path.abspath(os.path.join(APP_DIR, os.pardir))
|
|
SECRET_KEY = os.environ.get("PYPISTATS_SECRET", "secret-key")
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
|
|
|
|
class ProdConfig(Config):
|
|
"""Production configuration."""
|
|
|
|
DEBUG = False
|
|
ENV = "prod"
|
|
if os.environ.get("ENV", None) is None:
|
|
load_env_vars(ENV)
|
|
SQLALCHEMY_DATABASE_URI = get_db_uri(ENV)
|
|
|
|
|
|
class DevConfig(Config):
|
|
"""Development configuration."""
|
|
|
|
DEBUG = True
|
|
ENV = "dev"
|
|
if os.environ.get("ENV", None) is None:
|
|
load_env_vars(ENV)
|
|
SQLALCHEMY_DATABASE_URI = get_db_uri(ENV)
|
|
|
|
|
|
class TestConfig(Config):
|
|
"""Test configuration."""
|
|
|
|
DEBUG = True
|
|
ENV = "dev"
|
|
if os.environ.get("ENV", None) is None:
|
|
load_env_vars(ENV)
|
|
SQLALCHEMY_DATABASE_URI = get_db_uri(ENV)
|
|
TESTING = True
|
|
WTF_CSRF_ENABLED = False # Allows form testing
|
|
|
|
|
|
configs = {
|
|
"dev": DevConfig,
|
|
"prod": ProdConfig,
|
|
"test": TestConfig,
|
|
}
|