2024-09-04 16:54:48 +02:00
|
|
|
from open_webui.config import BannerModel
|
2024-08-28 00:10:27 +02:00
|
|
|
from fastapi import APIRouter, Depends, Request
|
|
|
|
|
from pydantic import BaseModel
|
2024-09-04 16:54:48 +02:00
|
|
|
from open_webui.utils.utils import get_admin_user, get_verified_user
|
2024-01-02 16:48:10 -08:00
|
|
|
|
2024-09-03 21:16:07 +02:00
|
|
|
|
2024-09-04 16:54:48 +02:00
|
|
|
from open_webui.config import get_config, save_config
|
2024-09-03 21:16:07 +02:00
|
|
|
|
2024-01-02 16:48:10 -08:00
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
|
|
|
2024-09-03 21:16:07 +02:00
|
|
|
############################
|
|
|
|
|
# ImportConfig
|
|
|
|
|
############################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ImportConfigForm(BaseModel):
|
|
|
|
|
config: dict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/import", response_model=dict)
|
|
|
|
|
async def import_config(form_data: ImportConfigForm, user=Depends(get_admin_user)):
|
|
|
|
|
save_config(form_data.config)
|
|
|
|
|
return get_config()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
############################
|
|
|
|
|
# ExportConfig
|
|
|
|
|
############################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/export", response_model=dict)
|
|
|
|
|
async def export_config(user=Depends(get_admin_user)):
|
|
|
|
|
return get_config()
|
|
|
|
|
|
|
|
|
|
|
2024-01-02 16:48:10 -08:00
|
|
|
class SetDefaultModelsForm(BaseModel):
|
|
|
|
|
models: str
|
|
|
|
|
|
|
|
|
|
|
2024-01-22 21:07:40 -08:00
|
|
|
class PromptSuggestion(BaseModel):
|
2024-08-14 13:46:31 +01:00
|
|
|
title: list[str]
|
2024-01-22 21:07:40 -08:00
|
|
|
content: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SetDefaultSuggestionsForm(BaseModel):
|
2024-08-14 13:46:31 +01:00
|
|
|
suggestions: list[PromptSuggestion]
|
2024-01-22 21:07:40 -08:00
|
|
|
|
|
|
|
|
|
2024-01-02 16:48:10 -08:00
|
|
|
############################
|
|
|
|
|
# SetDefaultModels
|
|
|
|
|
############################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/default/models", response_model=str)
|
2024-01-22 21:07:40 -08:00
|
|
|
async def set_global_default_models(
|
2024-02-08 18:05:01 -06:00
|
|
|
request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user)
|
2024-01-22 21:07:40 -08:00
|
|
|
):
|
2024-05-10 15:03:24 +08:00
|
|
|
request.app.state.config.DEFAULT_MODELS = form_data.models
|
|
|
|
|
return request.app.state.config.DEFAULT_MODELS
|
2024-02-08 18:05:01 -06:00
|
|
|
|
2024-01-22 21:07:40 -08:00
|
|
|
|
2024-08-14 13:46:31 +01:00
|
|
|
@router.post("/default/suggestions", response_model=list[PromptSuggestion])
|
2024-01-22 21:07:40 -08:00
|
|
|
async def set_global_default_suggestions(
|
|
|
|
|
request: Request,
|
|
|
|
|
form_data: SetDefaultSuggestionsForm,
|
2024-02-08 18:05:01 -06:00
|
|
|
user=Depends(get_admin_user),
|
2024-01-22 21:07:40 -08:00
|
|
|
):
|
2024-02-08 18:05:01 -06:00
|
|
|
data = form_data.model_dump()
|
2024-05-10 15:03:24 +08:00
|
|
|
request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"]
|
|
|
|
|
return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS
|
2024-05-26 12:18:43 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
############################
|
|
|
|
|
# SetBanners
|
|
|
|
|
############################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SetBannersForm(BaseModel):
|
2024-08-14 13:46:31 +01:00
|
|
|
banners: list[BannerModel]
|
2024-05-26 12:18:43 -07:00
|
|
|
|
|
|
|
|
|
2024-08-14 13:46:31 +01:00
|
|
|
@router.post("/banners", response_model=list[BannerModel])
|
2024-05-26 12:18:43 -07:00
|
|
|
async def set_banners(
|
|
|
|
|
request: Request,
|
|
|
|
|
form_data: SetBannersForm,
|
|
|
|
|
user=Depends(get_admin_user),
|
|
|
|
|
):
|
|
|
|
|
data = form_data.model_dump()
|
|
|
|
|
request.app.state.config.BANNERS = data["banners"]
|
|
|
|
|
return request.app.state.config.BANNERS
|
|
|
|
|
|
|
|
|
|
|
2024-08-14 13:46:31 +01:00
|
|
|
@router.get("/banners", response_model=list[BannerModel])
|
2024-05-26 12:18:43 -07:00
|
|
|
async def get_banners(
|
|
|
|
|
request: Request,
|
2024-06-27 11:29:59 -07:00
|
|
|
user=Depends(get_verified_user),
|
2024-05-26 12:18:43 -07:00
|
|
|
):
|
|
|
|
|
return request.app.state.config.BANNERS
|