configs.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from fastapi import Response, Request
  2. from fastapi import Depends, FastAPI, HTTPException, status
  3. from datetime import datetime, timedelta
  4. from typing import List, Union
  5. from fastapi import APIRouter
  6. from pydantic import BaseModel
  7. import time
  8. import uuid
  9. from config import BannerModel
  10. from apps.webui.models.users import Users
  11. from utils.utils import (
  12. get_password_hash,
  13. get_current_user,
  14. get_admin_user,
  15. create_token,
  16. )
  17. from utils.misc import get_gravatar_url, validate_email_format
  18. from constants import ERROR_MESSAGES
  19. router = APIRouter()
  20. class SetDefaultModelsForm(BaseModel):
  21. models: str
  22. class PromptSuggestion(BaseModel):
  23. title: List[str]
  24. content: str
  25. class SetDefaultSuggestionsForm(BaseModel):
  26. suggestions: List[PromptSuggestion]
  27. ############################
  28. # SetDefaultModels
  29. ############################
  30. @router.post("/default/models", response_model=str)
  31. async def set_global_default_models(
  32. request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user)
  33. ):
  34. request.app.state.config.DEFAULT_MODELS = form_data.models
  35. return request.app.state.config.DEFAULT_MODELS
  36. @router.post("/default/suggestions", response_model=List[PromptSuggestion])
  37. async def set_global_default_suggestions(
  38. request: Request,
  39. form_data: SetDefaultSuggestionsForm,
  40. user=Depends(get_admin_user),
  41. ):
  42. data = form_data.model_dump()
  43. request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"]
  44. return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS
  45. ############################
  46. # SetBanners
  47. ############################
  48. class SetBannersForm(BaseModel):
  49. banners: List[BannerModel]
  50. @router.post("/banners", response_model=List[BannerModel])
  51. async def set_banners(
  52. request: Request,
  53. form_data: SetBannersForm,
  54. user=Depends(get_admin_user),
  55. ):
  56. data = form_data.model_dump()
  57. request.app.state.config.BANNERS = data["banners"]
  58. return request.app.state.config.BANNERS
  59. @router.get("/banners", response_model=List[BannerModel])
  60. async def get_banners(
  61. request: Request,
  62. user=Depends(get_current_user),
  63. ):
  64. return request.app.state.config.BANNERS