configs.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from open_webui.config import BannerModel
  2. from fastapi import APIRouter, Depends, Request
  3. from pydantic import BaseModel
  4. from open_webui.utils.utils import get_admin_user, get_verified_user
  5. from open_webui.config import get_config, save_config
  6. router = APIRouter()
  7. ############################
  8. # ImportConfig
  9. ############################
  10. class ImportConfigForm(BaseModel):
  11. config: dict
  12. @router.post("/import", response_model=dict)
  13. async def import_config(form_data: ImportConfigForm, user=Depends(get_admin_user)):
  14. save_config(form_data.config)
  15. return get_config()
  16. ############################
  17. # ExportConfig
  18. ############################
  19. @router.get("/export", response_model=dict)
  20. async def export_config(user=Depends(get_admin_user)):
  21. return get_config()
  22. class SetDefaultModelsForm(BaseModel):
  23. models: str
  24. class PromptSuggestion(BaseModel):
  25. title: list[str]
  26. content: str
  27. class SetDefaultSuggestionsForm(BaseModel):
  28. suggestions: list[PromptSuggestion]
  29. ############################
  30. # SetDefaultModels
  31. ############################
  32. @router.post("/default/models", response_model=str)
  33. async def set_global_default_models(
  34. request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user)
  35. ):
  36. request.app.state.config.DEFAULT_MODELS = form_data.models
  37. return request.app.state.config.DEFAULT_MODELS
  38. @router.post("/default/suggestions", response_model=list[PromptSuggestion])
  39. async def set_global_default_suggestions(
  40. request: Request,
  41. form_data: SetDefaultSuggestionsForm,
  42. user=Depends(get_admin_user),
  43. ):
  44. data = form_data.model_dump()
  45. request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"]
  46. return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS
  47. ############################
  48. # SetBanners
  49. ############################
  50. class SetBannersForm(BaseModel):
  51. banners: list[BannerModel]
  52. @router.post("/banners", response_model=list[BannerModel])
  53. async def set_banners(
  54. request: Request,
  55. form_data: SetBannersForm,
  56. user=Depends(get_admin_user),
  57. ):
  58. data = form_data.model_dump()
  59. request.app.state.config.BANNERS = data["banners"]
  60. return request.app.state.config.BANNERS
  61. @router.get("/banners", response_model=list[BannerModel])
  62. async def get_banners(
  63. request: Request,
  64. user=Depends(get_verified_user),
  65. ):
  66. return request.app.state.config.BANNERS