fixes and improvements
This commit is contained in:
@@ -21,15 +21,6 @@ logger = logging.getLogger(__name__)
|
||||
class Settings(BaseSettings):
|
||||
"""Flat application settings read from env vars / .env file."""
|
||||
|
||||
# Jellyfin (legacy fallback only; machine settings are preferred)
|
||||
jellyfin_url: str = ""
|
||||
jellyfin_api_key: str = ""
|
||||
jellyfin_user_id: str = ""
|
||||
|
||||
# Jellyseerr (legacy fallback only; machine settings are preferred)
|
||||
jellyseerr_url: str = ""
|
||||
jellyseerr_api_key: str = ""
|
||||
|
||||
# Logging
|
||||
log_level: str = "INFO"
|
||||
|
||||
|
||||
@@ -129,17 +129,13 @@ def _resolve_machine(service: str, request: Request | None = None) -> dict[str,
|
||||
|
||||
|
||||
def get_jellyfin_client(request: Request = None) -> JellyfinClient:
|
||||
"""Return a Jellyfin client for the selected machine or legacy env fallback."""
|
||||
"""Return a Jellyfin client for the selected machine."""
|
||||
machine = get_settings_store().get_machine_config(_request_machine_id(request)) or _resolve_machine("jellyfin", request)
|
||||
if machine and machine.get("jellyfin_url") and machine.get("jellyfin_api_key"):
|
||||
cache_key = (machine["id"], machine["jellyfin_url"], machine.get("jellyfin_api_key") or "")
|
||||
return _jellyfin_client_for(cache_key)
|
||||
|
||||
settings = get_settings()
|
||||
if not settings.jellyfin_url or not settings.jellyfin_api_key:
|
||||
raise RuntimeError("No Jellyfin machine is configured and JELLYFIN_URL/API_KEY are not set")
|
||||
logger.info("Falling back to legacy Jellyfin env settings")
|
||||
return _jellyfin_client_for(("legacy", settings.jellyfin_url, settings.jellyfin_api_key))
|
||||
raise RuntimeError("No Jellyfin machine is configured. Add a machine with jellyfin_url and jellyfin_api_key in Settings.")
|
||||
|
||||
|
||||
def get_jellyseerr_client(request: Request = None) -> JellyseerrClient | None:
|
||||
@@ -148,16 +144,8 @@ def get_jellyseerr_client(request: Request = None) -> JellyseerrClient | None:
|
||||
if machine and machine.get("jellyseerr_url") and machine.get("jellyseerr_api_key"):
|
||||
return JellyseerrClient(machine["jellyseerr_url"], machine.get("jellyseerr_api_key") or "")
|
||||
|
||||
settings = get_settings()
|
||||
if not settings.jellyseerr_url or not settings.jellyseerr_api_key:
|
||||
logger.info(
|
||||
"Jellyseerr client not configured (url=%s, api_key=%s)",
|
||||
"set" if settings.jellyseerr_url else "missing",
|
||||
"set" if settings.jellyseerr_api_key else "missing",
|
||||
)
|
||||
return None
|
||||
logger.info("Falling back to legacy Jellyseerr env settings")
|
||||
return JellyseerrClient(settings.jellyseerr_url, settings.jellyseerr_api_key)
|
||||
logger.info("Jellyseerr client not configured (no machine with jellyseerr_url and jellyseerr_api_key)")
|
||||
return None
|
||||
|
||||
|
||||
def get_ssh_client(request: Request = None):
|
||||
@@ -232,9 +220,6 @@ def get_user_id(request: Request = None) -> str:
|
||||
machine = get_settings_store().get_machine_config(_request_machine_id(request)) or _resolve_machine("jellyfin", request)
|
||||
if machine and machine.get("jellyfin_user_id"):
|
||||
return str(machine["jellyfin_user_id"])
|
||||
settings = get_settings()
|
||||
if settings.jellyfin_user_id:
|
||||
return settings.jellyfin_user_id
|
||||
client = get_jellyfin_client(request)
|
||||
users = client.users()
|
||||
if not users:
|
||||
|
||||
@@ -44,11 +44,6 @@ def describe_settings(settings: object) -> dict[str, str]:
|
||||
"oidc_issuer_url": _sanitize_url(getattr(settings, "oidc_issuer_url", "")),
|
||||
"oidc_audience": getattr(settings, "oidc_audience", "") or "<unset>",
|
||||
"oidc_jwks_url": _sanitize_url(getattr(settings, "oidc_jwks_url", "")),
|
||||
"jellyfin_url": _sanitize_url(getattr(settings, "jellyfin_url", "")),
|
||||
"jellyfin_api_key": "set" if getattr(settings, "jellyfin_api_key", "") else "missing",
|
||||
"jellyfin_user_id": getattr(settings, "jellyfin_user_id", "") or "<auto>",
|
||||
"jellyseerr_url": _sanitize_url(getattr(settings, "jellyseerr_url", "")),
|
||||
"jellyseerr_api_key": "set" if getattr(settings, "jellyseerr_api_key", "") else "missing",
|
||||
"ssh_host": getattr(settings, "ssh_host", "") or "<unset>",
|
||||
"ssh_username": getattr(settings, "ssh_username", "") or "<unset>",
|
||||
"ssh_port": str(getattr(settings, "ssh_port", 22) or 22),
|
||||
|
||||
@@ -42,11 +42,11 @@ def _default_local_machine() -> dict[str, Any]:
|
||||
"password": "",
|
||||
"media_root": settings.media_root,
|
||||
"path_prefix": settings.path_prefix,
|
||||
"jellyfin_url": settings.jellyfin_url,
|
||||
"jellyfin_user_id": settings.jellyfin_user_id,
|
||||
"jellyfin_api_key": settings.jellyfin_api_key or "",
|
||||
"jellyseerr_url": settings.jellyseerr_url,
|
||||
"jellyseerr_api_key": settings.jellyseerr_api_key or "",
|
||||
"jellyfin_url": "",
|
||||
"jellyfin_user_id": "",
|
||||
"jellyfin_api_key": "",
|
||||
"jellyseerr_url": "",
|
||||
"jellyseerr_api_key": "",
|
||||
"notes": "",
|
||||
}
|
||||
|
||||
|
||||
@@ -11,8 +11,6 @@ class TestSettings:
|
||||
settings = Settings(_env_file=None)
|
||||
assert settings.ssh_host == ""
|
||||
assert settings.ssh_port == 22
|
||||
assert settings.jellyfin_url == ""
|
||||
assert settings.jellyseerr_url == ""
|
||||
assert settings.log_level == "INFO"
|
||||
assert settings.remote_media_root == ""
|
||||
assert settings.ssh_key_directory == ""
|
||||
@@ -21,10 +19,6 @@ class TestSettings:
|
||||
|
||||
def test_from_env(self):
|
||||
env = {
|
||||
"JELLYFIN_URL": "https://test.example.com",
|
||||
"JELLYFIN_API_KEY": "key123",
|
||||
"JELLYSEERR_URL": "https://requests.example.com",
|
||||
"JELLYSEERR_API_KEY": "seerr123",
|
||||
"LOG_LEVEL": "DEBUG",
|
||||
"SSH_HOST": "192.168.1.1",
|
||||
"SSH_USERNAME": "testuser",
|
||||
@@ -33,10 +27,6 @@ class TestSettings:
|
||||
}
|
||||
with patch.dict(os.environ, env, clear=True):
|
||||
settings = Settings(_env_file=None)
|
||||
assert settings.jellyfin_url == "https://test.example.com"
|
||||
assert settings.jellyfin_api_key == "key123"
|
||||
assert settings.jellyseerr_url == "https://requests.example.com"
|
||||
assert settings.jellyseerr_api_key == "seerr123"
|
||||
assert settings.log_level == "DEBUG"
|
||||
assert settings.ssh_host == "192.168.1.1"
|
||||
assert settings.ssh_username == "testuser"
|
||||
|
||||
Reference in New Issue
Block a user