30 lines
706 B
Python
30 lines
706 B
Python
"""
|
|
Per-connection session config using Python contextvars.
|
|
Each SSE connection sets its own Frappe credentials, isolated from other users.
|
|
Falls back to .env values if no per-session config is set (local stdio mode).
|
|
"""
|
|
|
|
from contextvars import ContextVar
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class SessionConfig:
|
|
frappe_url: str
|
|
api_key: str
|
|
api_secret: str
|
|
site_name: str = ""
|
|
read_only_mode: bool = False
|
|
request_timeout: int = 30
|
|
|
|
|
|
_session: ContextVar[SessionConfig | None] = ContextVar("frappe_session", default=None)
|
|
|
|
|
|
def set_session(config: SessionConfig) -> None:
|
|
_session.set(config)
|
|
|
|
|
|
def get_session() -> SessionConfig | None:
|
|
return _session.get()
|