59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
from typing import Any
|
|
|
|
from pydantic import model_validator
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
database_url: str
|
|
secret_key: str
|
|
|
|
app_name: str = "Hermes API"
|
|
app_version: str = "0.1.0"
|
|
access_token_expire_minutes: int = 60
|
|
jwt_issuer: str = "hermes"
|
|
log_level: str = "INFO"
|
|
initial_admin_username: str | None = None
|
|
initial_admin_email: str | None = None
|
|
initial_admin_password: str | None = None
|
|
initial_admin_first_name: str = ""
|
|
initial_admin_last_name: str = ""
|
|
storage_provider: str = "local"
|
|
storage_base_path: str = "/data/storage"
|
|
storage_max_upload_mb: int = 50
|
|
knowledge_storage_path: str = "/data/knowledge"
|
|
knowledge_max_upload_mb: int = 50
|
|
olympus_repair_intake_token: str | None = None
|
|
public_repair_status_base_url: str | None = None
|
|
smtp_host: str | None = None
|
|
smtp_port: int = 587
|
|
smtp_username: str | None = None
|
|
smtp_password: str | None = None
|
|
smtp_from_email: str | None = None
|
|
smtp_from_name: str = "Funktechnik Schubert"
|
|
smtp_use_tls: bool = True
|
|
lexware_enabled: bool = False
|
|
lexware_api_base_url: str = "https://api.lexware.io"
|
|
lexware_api_key: str | None = None
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
extra="ignore",
|
|
)
|
|
|
|
@model_validator(mode="before")
|
|
@classmethod
|
|
def apply_legacy_storage_settings(cls, values: Any) -> Any:
|
|
if not isinstance(values, dict):
|
|
return values
|
|
|
|
if "storage_base_path" not in values and "knowledge_storage_path" in values:
|
|
values["storage_base_path"] = values["knowledge_storage_path"]
|
|
|
|
if "storage_max_upload_mb" not in values and "knowledge_max_upload_mb" in values:
|
|
values["storage_max_upload_mb"] = values["knowledge_max_upload_mb"]
|
|
|
|
return values
|
|
|
|
|
|
settings = Settings()
|