This commit is contained in:
Mateusz Gruszczyński
2026-03-13 11:03:13 +01:00
commit 35571df778
132 changed files with 11197 additions and 0 deletions

68
config.py Normal file
View File

@@ -0,0 +1,68 @@
import os
from pathlib import Path
from dotenv import load_dotenv
BASE_DIR = Path(__file__).resolve().parent
load_dotenv(BASE_DIR / '.env')
def _normalize_sqlalchemy_db_url(raw: str | None) -> str:
if not raw:
return f"sqlite:///{(BASE_DIR / 'instance' / 'app.db').resolve()}"
if raw.startswith('sqlite:///') and not raw.startswith('sqlite:////'):
rel = raw.replace('sqlite:///', '', 1)
return f"sqlite:///{(BASE_DIR / rel).resolve()}"
return raw
def _path_from_env(name: str, default: Path) -> Path:
raw = os.getenv(name)
if not raw:
return default
path = Path(raw)
return path if path.is_absolute() else (BASE_DIR / path).resolve()
def _normalize_redis_url(raw: str | None) -> str:
if not raw:
return 'memory://'
raw = raw.strip()
if '://' not in raw:
raw = f'redis://{raw}'
return raw
class Config:
SECRET_KEY = os.getenv('SECRET_KEY', 'change-me-please')
APP_MASTER_KEY = os.getenv('APP_MASTER_KEY', SECRET_KEY)
SQLALCHEMY_DATABASE_URI = _normalize_sqlalchemy_db_url(os.getenv('DATABASE_URL'))
SQLALCHEMY_TRACK_MODIFICATIONS = False
ARCHIVE_PATH = _path_from_env('ARCHIVE_PATH', BASE_DIR / 'storage' / 'archive')
PDF_PATH = _path_from_env('PDF_PATH', BASE_DIR / 'storage' / 'pdf')
BACKUP_PATH = _path_from_env('BACKUP_PATH', BASE_DIR / 'storage' / 'backups')
CERTS_PATH = _path_from_env('CERTS_PATH', BASE_DIR / 'storage' / 'certs')
APP_TIMEZONE = os.getenv('APP_TIMEZONE', 'Europe/Warsaw')
LOG_LEVEL = os.getenv('LOG_LEVEL', 'INFO')
APP_PORT = int(os.getenv('APP_PORT', '5000'))
REDIS_URL = _normalize_redis_url(os.getenv('REDIS_URL', ''))
WTF_CSRF_TIME_LIMIT = None
RATELIMIT_STORAGE_URI = REDIS_URL
APP_EXTERNAL_SCHEME = os.getenv('APP_EXTERNAL_SCHEME', 'http')
APP_EXTERNAL_HOST = os.getenv('APP_EXTERNAL_HOST', '')
PREFERRED_URL_SCHEME = APP_EXTERNAL_SCHEME
SESSION_COOKIE_SECURE = APP_EXTERNAL_SCHEME == 'https'
REMEMBER_COOKIE_SECURE = APP_EXTERNAL_SCHEME == 'https'
SESSION_COOKIE_HTTPONLY = True
REMEMBER_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
#CEIDG_API_URL = os.getenv('CEIDG_API_URL', 'https://dane.biznes.gov.pl/api/ceidg/v2/firmy')
#CEIDG_TEST_API_URL = os.getenv('CEIDG_TEST_API_URL', 'https://test-dane.biznes.gov.pl/api/ceidg/v2/firmy')
APP_FOOTER_TEXT = 'KSeF Manager · linuxiarz.pl · Mateusz Gruszczyński'
class TestConfig(Config):
TESTING = True
WTF_CSRF_ENABLED = False
SQLALCHEMY_DATABASE_URI = 'sqlite:///:memory:'
REDIS_URL = 'memory://'
RATELIMIT_STORAGE_URI = 'memory://'