Spaces:
Running
Running
File size: 1,832 Bytes
ebdad37 6bf4af7 ebdad37 35d4a05 88e4347 35d4a05 88e4347 ebdad37 6bf4af7 ebdad37 6bf4af7 6c0cb98 6bf4af7 6c0cb98 6bf4af7 ebdad37 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
from python.helpers.api import ApiHandler, Request, Response
from python.helpers import settings, dotenv
import os
class Set(ApiHandler):
@classmethod
def requires_auth(cls) -> bool:
return True
@classmethod
def requires_csrf(cls) -> bool:
return False
@classmethod
def requires_api_key(cls) -> bool:
return True
async def process(self, input: dict, request: Request) -> dict:
# Separate API keys from other settings
api_keys = {}
other_settings = {}
for k, v in input.items():
if k.startswith("api_key_"):
provider = k.replace("api_key_", "").upper()
api_keys[provider] = v
elif k.endswith("_API_KEY") or k.endswith("_API_TOKEN"):
api_keys[k.upper()] = v
else:
other_settings[k] = v
if other_settings:
settings.set_settings_delta(other_settings)
if api_keys:
current_settings = settings.get_settings()
for key, val in api_keys.items():
# Save to settings
current_settings["api_keys"][key.lower()] = val
# Save to dotenv and os.environ
dotenv.save_dotenv_value(f"API_KEY_{key.upper()}", val)
dotenv.save_dotenv_value(f"{key.upper()}_API_KEY", val)
# Special case for 'other' provider remapping to 'openai'
if key.upper() == "OTHER":
dotenv.save_dotenv_value("OPENAI_API_KEY", val)
dotenv.save_dotenv_value("API_KEY_OPENAI", val)
settings.set_settings(current_settings)
return {"status": "success", "message": "Settings updated"}
|