Move Resos API key to central Settings service; add sidebar scrollbar styling

Removes the standalone resos_api_key from the forecasting app's own
system_config table. All credential fetches now go through
central_settings.get_resos_credentials() / get_resos_credentials_sync()
which pull from the Settings app (LXC 116) via the internal integration
endpoint — the same pattern already used for NewBook. The Resos API
Config section is removed from the forecasting Settings page; users
manage the key in the central Settings app instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-13 14:35:35 +00:00
parent 9057d764fa
commit 3650c92175
7 changed files with 51 additions and 282 deletions

View file

@ -76,29 +76,10 @@ def load_newbook_credentials(db) -> dict:
def load_resos_credentials(db) -> dict:
"""Load Resos API credentials from database config."""
import base64
def decrypt(value: str) -> str:
"""Decrypt base64 encoded value"""
if not value:
return None
try:
return base64.b64decode(value.encode()).decode()
except:
return value
# Get API key (may be encrypted)
api_key_result = db.execute(
text("SELECT config_value, is_encrypted FROM system_config WHERE config_key = 'resos_api_key'")
)
api_key_row = api_key_result.fetchone()
api_key = None
if api_key_row and api_key_row.config_value:
api_key = decrypt(api_key_row.config_value) if api_key_row.is_encrypted else api_key_row.config_value
return {'api_key': api_key}
"""Load Resos API credentials from central Settings service."""
from services.central_settings import get_resos_credentials_sync
creds = get_resos_credentials_sync()
return creds or {'api_key': None}
def load_gl_config(db) -> tuple: