|
from fastapi import Response, Request |
|
from fastapi import Depends, FastAPI, HTTPException, status |
|
from datetime import datetime, timedelta |
|
from typing import List, Union |
|
|
|
from fastapi import APIRouter |
|
from pydantic import BaseModel |
|
import time |
|
import uuid |
|
|
|
from config import BannerModel |
|
|
|
from apps.webui.models.users import Users |
|
|
|
from utils.utils import ( |
|
get_password_hash, |
|
get_verified_user, |
|
get_admin_user, |
|
create_token, |
|
) |
|
from utils.misc import get_gravatar_url, validate_email_format |
|
from constants import ERROR_MESSAGES |
|
|
|
router = APIRouter() |
|
|
|
|
|
class SetDefaultModelsForm(BaseModel): |
|
models: str |
|
|
|
|
|
class PromptSuggestion(BaseModel): |
|
title: List[str] |
|
content: str |
|
|
|
|
|
class SetDefaultSuggestionsForm(BaseModel): |
|
suggestions: List[PromptSuggestion] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.post("/default/models", response_model=str) |
|
async def set_global_default_models( |
|
request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user) |
|
): |
|
request.app.state.config.DEFAULT_MODELS = form_data.models |
|
return request.app.state.config.DEFAULT_MODELS |
|
|
|
|
|
@router.post("/default/suggestions", response_model=List[PromptSuggestion]) |
|
async def set_global_default_suggestions( |
|
request: Request, |
|
form_data: SetDefaultSuggestionsForm, |
|
user=Depends(get_admin_user), |
|
): |
|
data = form_data.model_dump() |
|
request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"] |
|
return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SetBannersForm(BaseModel): |
|
banners: List[BannerModel] |
|
|
|
|
|
@router.post("/banners", response_model=List[BannerModel]) |
|
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 |
|
|
|
|
|
@router.get("/banners", response_model=List[BannerModel]) |
|
async def get_banners( |
|
request: Request, |
|
user=Depends(get_verified_user), |
|
): |
|
return request.app.state.config.BANNERS |
|
|