hm_ai_qc_report_tool/config.py
nickviljoen f21e41afc3 v1.2.0: Add Docker deployment, simplify auth to local login, production config
- Add Dockerfile, docker-compose.yml, .dockerignore for containerised deployment
- Add deploy/ scripts (deploy.sh, nginx/apache configs, password generator)
- Replace MSAL/Azure AD auth with local username/password authentication
- Add login.html template
- Simplify app.py, middleware, and auth routes for production use
- Update gunicorn_config.py and wsgi.py for Docker/production
- Update templates to work with new auth and URL prefix handling

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 14:37:53 +02:00

63 lines
2.2 KiB
Python

"""Application configuration."""
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
class Config:
"""Base configuration."""
# Flask
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-production')
# Authentication (simple username:password_hash pairs, comma-separated)
AUTH_USERS = os.environ.get('AUTH_USERS', '')
# Box
BOX_CONFIG_PATH = os.environ.get('BOX_CONFIG_PATH', 'config/box_config.json')
BOX_REPORT_FOLDER_ID = os.environ.get('BOX_REPORT_FOLDER_ID', '133295752718')
# Server
HOST = os.environ.get('HOST', '0.0.0.0')
PORT = int(os.environ.get('PORT', 5000))
# Database
# Use absolute path for SQLite database
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = os.environ.get(
'DATABASE_URI',
f'sqlite:///{os.path.join(BASE_DIR, "database", "qc_platform.db")}'
)
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = os.environ.get('FLASK_ENV') == 'development'
# Session Configuration
SESSION_COOKIE_SECURE = os.environ.get('FLASK_ENV') == 'production'
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_PATH = os.environ.get('SESSION_COOKIE_PATH', '/')
# File Upload Configuration
MAX_CONTENT_LENGTH = 500 * 1024 * 1024 # 500 MB max file size
UPLOAD_FOLDER = 'uploads'
STORAGE_FOLDER = 'storage'
# Module-specific paths
HM_QC_UPLOAD_PATH = 'uploads/hm_qc'
VIDEO_QC_UPLOAD_PATH = 'uploads/video_qc'
VIDEO_MASTER_UPLOAD_PATH = 'uploads/video_master'
HM_QC_STORAGE_PATH = 'storage/reports/hm_qc'
CONSOLIDATED_STORAGE_PATH = 'storage/reports/consolidated'
# LLM Configuration
OPENAI_API_KEY = os.environ.get('OPENAI_API_KEY')
ANTHROPIC_API_KEY = os.environ.get('ANTHROPIC_API_KEY')
AZURE_OPENAI_API_KEY = os.environ.get('AZURE_OPENAI_API_KEY')
AZURE_OPENAI_ENDPOINT = os.environ.get('AZURE_OPENAI_ENDPOINT')
GOOGLE_API_KEY = os.environ.get('GOOGLE_API_KEY')
# Application
MAX_REPORTS_PER_JOB = 100 # Limit reports fetched per job number
CACHE_TIMEOUT = 300 # 5 minutes cache for Box searches