Files
demo_partsERP/config.py

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")