82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
"""
|
|
Project: PARTS Website
|
|
Author: Edward Middleton-Smith
|
|
Precision And Research Technology Systems Limited
|
|
|
|
Technology: Backend
|
|
Feature: Configuration
|
|
|
|
Description:
|
|
Configuration variables
|
|
"""
|
|
|
|
from lib import argument_validation as av
|
|
import os
|
|
from dotenv import load_dotenv, find_dotenv
|
|
from flask import current_app
|
|
|
|
load_dotenv(find_dotenv())
|
|
|
|
class Config:
|
|
is_development = False
|
|
is_production = False
|
|
|
|
DB_HOST = os.getenv('DB_HOST')
|
|
DB_NAME = os.getenv('demo')
|
|
DB_PASSWORD = os.getenv('DB_PASSWORD')
|
|
DB_USER = os.getenv('DB_USER')
|
|
DEBUG = False
|
|
DOMAIN_AUTH0 = os.getenv('DOMAIN_AUTH0')
|
|
ID_AUTH0_CLIENT = os.getenv('ID_AUTH0_CLIENT')
|
|
ID_AUTH0_CLIENT_SECRET = os.getenv('ID_AUTH0_CLIENT_SECRET')
|
|
ID_TOKEN_USER = 'user'
|
|
MAIL_DEBUG = False
|
|
MAIL_SERVER = 'mail.partsltd.co.uk'
|
|
MAIL_PORT = 465
|
|
MAIL_USE_TLS = False
|
|
MAIL_USE_SSL = True
|
|
MAIL_USERNAME = os.getenv('MAIL_DEFAULT_SENDER')
|
|
MAIL_PASSWORD = os.getenv('MAIL_PASSWORD')
|
|
MAIL_DEFAULT_SENDER = os.getenv('MAIL_DEFAULT_SENDER')
|
|
MAIL_CONTACT_PUBLIC = os.getenv('MAIL_CONTACT_PUBLIC')
|
|
RECAPTCHA_PUBLIC_KEY = os.getenv('RECAPTCHA_PUBLIC_KEY')
|
|
RECAPTCHA_PRIVATE_KEY = os.getenv('RECAPTCHA_PRIVATE_KEY')
|
|
REMEMBER_COOKIE_SECURE = True
|
|
SECRET_KEY = os.getenv('KEY_SECRET_FLASK')
|
|
SESSION_COOKIE_SECURE = True
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
SESSION_COOKIE_SAMESITE = 'Lax' # 'Strict' # Strict is preferable for security, but Lax is required for OAuth functionality
|
|
SQLALCHEMY_DATABASE_URI = os.getenv('SQLALCHEMY_DATABASE_URI')
|
|
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
|
SQLALCHEMY_ENGINE_OPTIONS = {
|
|
'pool_size': 10,
|
|
'pool_recycle': 280,
|
|
'pool_pre_ping': True,
|
|
'pool_timeout': 30,
|
|
}
|
|
TESTING = False
|
|
URL_HOST = os.getenv('URL_HOST')
|
|
WTF_CSRF_ENABLED = True
|
|
WTF_CSRF_SSL_STRICT = False
|
|
WTF_CSRF_TIME_LIMIT = None
|
|
|
|
class DevelopmentConfig(Config):
|
|
is_development = True
|
|
DEBUG = True
|
|
MAIL_DEBUG = True
|
|
SESSION_COOKIE_SECURE = False
|
|
|
|
class ProductionConfig(Config):
|
|
is_production = True
|
|
|
|
config_env = os.getenv('FLASK_ENV', "production")
|
|
with open('app.log', 'a') as f:
|
|
print(f'config_env: {config_env}')
|
|
f.write(f'config_env: {config_env}\n')
|
|
if config_env == 'development':
|
|
app_config = DevelopmentConfig
|
|
elif config_env == 'production':
|
|
app_config = ProductionConfig
|
|
else:
|
|
raise ValueError("Invalid configuration environment")
|