configs.py 2.13 KB
Newer Older
Timothy J. Baek's avatar
Timothy J. Baek committed
1
2
3
from fastapi import Response, Request
from fastapi import Depends, FastAPI, HTTPException, status
from datetime import datetime, timedelta
Michael Poluektov's avatar
Michael Poluektov committed
4
from typing import Union
Timothy J. Baek's avatar
Timothy J. Baek committed
5
6
7
8
9
10

from fastapi import APIRouter
from pydantic import BaseModel
import time
import uuid

Timothy J. Baek's avatar
Timothy J. Baek committed
11
12
from config import BannerModel

13
from apps.webui.models.users import Users
Timothy J. Baek's avatar
Timothy J. Baek committed
14

Timothy J. Baek's avatar
Timothy J. Baek committed
15
16
from utils.utils import (
    get_password_hash,
Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
17
    get_verified_user,
Timothy J. Baek's avatar
Timothy J. Baek committed
18
19
20
    get_admin_user,
    create_token,
)
Timothy J. Baek's avatar
Timothy J. Baek committed
21
22
23
24
25
26
27
28
29
30
from utils.misc import get_gravatar_url, validate_email_format
from constants import ERROR_MESSAGES

router = APIRouter()


class SetDefaultModelsForm(BaseModel):
    models: str


31
class PromptSuggestion(BaseModel):
Michael Poluektov's avatar
Michael Poluektov committed
32
    title: list[str]
33
34
35
36
    content: str


class SetDefaultSuggestionsForm(BaseModel):
Michael Poluektov's avatar
Michael Poluektov committed
37
    suggestions: list[PromptSuggestion]
38
39


Timothy J. Baek's avatar
Timothy J. Baek committed
40
41
42
43
44
45
############################
# SetDefaultModels
############################


@router.post("/default/models", response_model=str)
46
async def set_global_default_models(
47
    request: Request, form_data: SetDefaultModelsForm, user=Depends(get_admin_user)
48
):
49
50
    request.app.state.config.DEFAULT_MODELS = form_data.models
    return request.app.state.config.DEFAULT_MODELS
51

52

Michael Poluektov's avatar
Michael Poluektov committed
53
@router.post("/default/suggestions", response_model=list[PromptSuggestion])
54
55
56
async def set_global_default_suggestions(
    request: Request,
    form_data: SetDefaultSuggestionsForm,
57
    user=Depends(get_admin_user),
58
):
59
    data = form_data.model_dump()
60
61
    request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS = data["suggestions"]
    return request.app.state.config.DEFAULT_PROMPT_SUGGESTIONS
Timothy J. Baek's avatar
Timothy J. Baek committed
62
63
64
65
66
67
68
69


############################
# SetBanners
############################


class SetBannersForm(BaseModel):
Michael Poluektov's avatar
Michael Poluektov committed
70
    banners: list[BannerModel]
Timothy J. Baek's avatar
Timothy J. Baek committed
71
72


Michael Poluektov's avatar
Michael Poluektov committed
73
@router.post("/banners", response_model=list[BannerModel])
Timothy J. Baek's avatar
Timothy J. Baek committed
74
75
76
77
78
79
80
81
82
83
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


Michael Poluektov's avatar
Michael Poluektov committed
84
@router.get("/banners", response_model=list[BannerModel])
Timothy J. Baek's avatar
Timothy J. Baek committed
85
86
async def get_banners(
    request: Request,
Timothy J. Baek's avatar
refac  
Timothy J. Baek committed
87
    user=Depends(get_verified_user),
Timothy J. Baek's avatar
Timothy J. Baek committed
88
89
):
    return request.app.state.config.BANNERS