Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
13b0e7d6
Unverified
Commit
13b0e7d6
authored
Aug 14, 2024
by
Timothy Jaeryang Baek
Committed by
GitHub
Aug 14, 2024
Browse files
Merge pull request #4434 from open-webui/dev
0.3.13
parents
8d257ed5
c8badfe2
Changes
132
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
127 additions
and
127 deletions
+127
-127
backend/apps/webui/models/chats.py
backend/apps/webui/models/chats.py
+20
-20
backend/apps/webui/models/documents.py
backend/apps/webui/models/documents.py
+5
-5
backend/apps/webui/models/files.py
backend/apps/webui/models/files.py
+5
-5
backend/apps/webui/models/functions.py
backend/apps/webui/models/functions.py
+10
-10
backend/apps/webui/models/memories.py
backend/apps/webui/models/memories.py
+10
-10
backend/apps/webui/models/models.py
backend/apps/webui/models/models.py
+3
-3
backend/apps/webui/models/prompts.py
backend/apps/webui/models/prompts.py
+5
-5
backend/apps/webui/models/tags.py
backend/apps/webui/models/tags.py
+8
-8
backend/apps/webui/models/tools.py
backend/apps/webui/models/tools.py
+8
-8
backend/apps/webui/models/users.py
backend/apps/webui/models/users.py
+12
-12
backend/apps/webui/routers/chats.py
backend/apps/webui/routers/chats.py
+11
-11
backend/apps/webui/routers/configs.py
backend/apps/webui/routers/configs.py
+7
-7
backend/apps/webui/routers/documents.py
backend/apps/webui/routers/documents.py
+4
-4
backend/apps/webui/routers/files.py
backend/apps/webui/routers/files.py
+2
-2
backend/apps/webui/routers/functions.py
backend/apps/webui/routers/functions.py
+5
-5
backend/apps/webui/routers/memories.py
backend/apps/webui/routers/memories.py
+2
-2
backend/apps/webui/routers/models.py
backend/apps/webui/routers/models.py
+2
-2
backend/apps/webui/routers/prompts.py
backend/apps/webui/routers/prompts.py
+3
-3
backend/apps/webui/routers/tools.py
backend/apps/webui/routers/tools.py
+3
-3
backend/apps/webui/routers/users.py
backend/apps/webui/routers/users.py
+2
-2
No files found.
backend/apps/webui/models/chats.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
import
json
import
uuid
...
...
@@ -164,7 +164,7 @@ class ChatTable:
db
.
refresh
(
chat
)
return
self
.
get_chat_by_id
(
chat
.
share_id
)
except
:
except
Exception
:
return
None
def
delete_shared_chat_by_chat_id
(
self
,
chat_id
:
str
)
->
bool
:
...
...
@@ -175,7 +175,7 @@ class ChatTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
def
update_chat_share_id_by_id
(
...
...
@@ -189,7 +189,7 @@ class ChatTable:
db
.
commit
()
db
.
refresh
(
chat
)
return
ChatModel
.
model_validate
(
chat
)
except
:
except
Exception
:
return
None
def
toggle_chat_archive_by_id
(
self
,
id
:
str
)
->
Optional
[
ChatModel
]:
...
...
@@ -201,7 +201,7 @@ class ChatTable:
db
.
commit
()
db
.
refresh
(
chat
)
return
ChatModel
.
model_validate
(
chat
)
except
:
except
Exception
:
return
None
def
archive_all_chats_by_user_id
(
self
,
user_id
:
str
)
->
bool
:
...
...
@@ -210,12 +210,12 @@ class ChatTable:
db
.
query
(
Chat
).
filter_by
(
user_id
=
user_id
).
update
({
"archived"
:
True
})
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
def
get_archived_chat_list_by_user_id
(
self
,
user_id
:
str
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
L
ist
[
ChatModel
]:
)
->
l
ist
[
ChatModel
]:
with
get_db
()
as
db
:
all_chats
=
(
...
...
@@ -233,7 +233,7 @@ class ChatTable:
include_archived
:
bool
=
False
,
skip
:
int
=
0
,
limit
:
int
=
50
,
)
->
L
ist
[
ChatModel
]:
)
->
l
ist
[
ChatModel
]:
with
get_db
()
as
db
:
query
=
db
.
query
(
Chat
).
filter_by
(
user_id
=
user_id
)
if
not
include_archived
:
...
...
@@ -251,7 +251,7 @@ class ChatTable:
include_archived
:
bool
=
False
,
skip
:
int
=
0
,
limit
:
int
=
-
1
,
)
->
L
ist
[
ChatTitleIdResponse
]:
)
->
l
ist
[
ChatTitleIdResponse
]:
with
get_db
()
as
db
:
query
=
db
.
query
(
Chat
).
filter_by
(
user_id
=
user_id
)
if
not
include_archived
:
...
...
@@ -279,8 +279,8 @@ class ChatTable:
]
def
get_chat_list_by_chat_ids
(
self
,
chat_ids
:
L
ist
[
str
],
skip
:
int
=
0
,
limit
:
int
=
50
)
->
L
ist
[
ChatModel
]:
self
,
chat_ids
:
l
ist
[
str
],
skip
:
int
=
0
,
limit
:
int
=
50
)
->
l
ist
[
ChatModel
]:
with
get_db
()
as
db
:
all_chats
=
(
db
.
query
(
Chat
)
...
...
@@ -297,7 +297,7 @@ class ChatTable:
chat
=
db
.
get
(
Chat
,
id
)
return
ChatModel
.
model_validate
(
chat
)
except
:
except
Exception
:
return
None
def
get_chat_by_share_id
(
self
,
id
:
str
)
->
Optional
[
ChatModel
]:
...
...
@@ -319,10 +319,10 @@ class ChatTable:
chat
=
db
.
query
(
Chat
).
filter_by
(
id
=
id
,
user_id
=
user_id
).
first
()
return
ChatModel
.
model_validate
(
chat
)
except
:
except
Exception
:
return
None
def
get_chats
(
self
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
L
ist
[
ChatModel
]:
def
get_chats
(
self
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
l
ist
[
ChatModel
]:
with
get_db
()
as
db
:
all_chats
=
(
...
...
@@ -332,7 +332,7 @@ class ChatTable:
)
return
[
ChatModel
.
model_validate
(
chat
)
for
chat
in
all_chats
]
def
get_chats_by_user_id
(
self
,
user_id
:
str
)
->
L
ist
[
ChatModel
]:
def
get_chats_by_user_id
(
self
,
user_id
:
str
)
->
l
ist
[
ChatModel
]:
with
get_db
()
as
db
:
all_chats
=
(
...
...
@@ -342,7 +342,7 @@ class ChatTable:
)
return
[
ChatModel
.
model_validate
(
chat
)
for
chat
in
all_chats
]
def
get_archived_chats_by_user_id
(
self
,
user_id
:
str
)
->
L
ist
[
ChatModel
]:
def
get_archived_chats_by_user_id
(
self
,
user_id
:
str
)
->
l
ist
[
ChatModel
]:
with
get_db
()
as
db
:
all_chats
=
(
...
...
@@ -360,7 +360,7 @@ class ChatTable:
db
.
commit
()
return
True
and
self
.
delete_shared_chat_by_chat_id
(
id
)
except
:
except
Exception
:
return
False
def
delete_chat_by_id_and_user_id
(
self
,
id
:
str
,
user_id
:
str
)
->
bool
:
...
...
@@ -371,7 +371,7 @@ class ChatTable:
db
.
commit
()
return
True
and
self
.
delete_shared_chat_by_chat_id
(
id
)
except
:
except
Exception
:
return
False
def
delete_chats_by_user_id
(
self
,
user_id
:
str
)
->
bool
:
...
...
@@ -385,7 +385,7 @@ class ChatTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
def
delete_shared_chats_by_user_id
(
self
,
user_id
:
str
)
->
bool
:
...
...
@@ -400,7 +400,7 @@ class ChatTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/documents.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
time
import
logging
...
...
@@ -93,7 +93,7 @@ class DocumentsTable:
return
DocumentModel
.
model_validate
(
result
)
else
:
return
None
except
:
except
Exception
:
return
None
def
get_doc_by_name
(
self
,
name
:
str
)
->
Optional
[
DocumentModel
]:
...
...
@@ -102,10 +102,10 @@ class DocumentsTable:
document
=
db
.
query
(
Document
).
filter_by
(
name
=
name
).
first
()
return
DocumentModel
.
model_validate
(
document
)
if
document
else
None
except
:
except
Exception
:
return
None
def
get_docs
(
self
)
->
L
ist
[
DocumentModel
]:
def
get_docs
(
self
)
->
l
ist
[
DocumentModel
]:
with
get_db
()
as
db
:
return
[
...
...
@@ -160,7 +160,7 @@ class DocumentsTable:
db
.
query
(
Document
).
filter_by
(
name
=
name
).
delete
()
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/files.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
import
time
import
logging
...
...
@@ -90,10 +90,10 @@ class FilesTable:
try
:
file
=
db
.
get
(
File
,
id
)
return
FileModel
.
model_validate
(
file
)
except
:
except
Exception
:
return
None
def
get_files
(
self
)
->
L
ist
[
FileModel
]:
def
get_files
(
self
)
->
l
ist
[
FileModel
]:
with
get_db
()
as
db
:
return
[
FileModel
.
model_validate
(
file
)
for
file
in
db
.
query
(
File
).
all
()]
...
...
@@ -107,7 +107,7 @@ class FilesTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
def
delete_all_files
(
self
)
->
bool
:
...
...
@@ -119,7 +119,7 @@ class FilesTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/functions.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
import
time
import
logging
...
...
@@ -122,10 +122,10 @@ class FunctionsTable:
function
=
db
.
get
(
Function
,
id
)
return
FunctionModel
.
model_validate
(
function
)
except
:
except
Exception
:
return
None
def
get_functions
(
self
,
active_only
=
False
)
->
L
ist
[
FunctionModel
]:
def
get_functions
(
self
,
active_only
=
False
)
->
l
ist
[
FunctionModel
]:
with
get_db
()
as
db
:
if
active_only
:
...
...
@@ -141,7 +141,7 @@ class FunctionsTable:
def
get_functions_by_type
(
self
,
type
:
str
,
active_only
=
False
)
->
L
ist
[
FunctionModel
]:
)
->
l
ist
[
FunctionModel
]:
with
get_db
()
as
db
:
if
active_only
:
...
...
@@ -157,7 +157,7 @@ class FunctionsTable:
for
function
in
db
.
query
(
Function
).
filter_by
(
type
=
type
).
all
()
]
def
get_global_filter_functions
(
self
)
->
L
ist
[
FunctionModel
]:
def
get_global_filter_functions
(
self
)
->
l
ist
[
FunctionModel
]:
with
get_db
()
as
db
:
return
[
...
...
@@ -167,7 +167,7 @@ class FunctionsTable:
.
all
()
]
def
get_global_action_functions
(
self
)
->
L
ist
[
FunctionModel
]:
def
get_global_action_functions
(
self
)
->
l
ist
[
FunctionModel
]:
with
get_db
()
as
db
:
return
[
FunctionModel
.
model_validate
(
function
)
...
...
@@ -198,7 +198,7 @@ class FunctionsTable:
db
.
commit
()
db
.
refresh
(
function
)
return
self
.
get_function_by_id
(
id
)
except
:
except
Exception
:
return
None
def
get_user_valves_by_id_and_user_id
(
...
...
@@ -256,7 +256,7 @@ class FunctionsTable:
)
db
.
commit
()
return
self
.
get_function_by_id
(
id
)
except
:
except
Exception
:
return
None
def
deactivate_all_functions
(
self
)
->
Optional
[
bool
]:
...
...
@@ -271,7 +271,7 @@ class FunctionsTable:
)
db
.
commit
()
return
True
except
:
except
Exception
:
return
None
def
delete_function_by_id
(
self
,
id
:
str
)
->
bool
:
...
...
@@ -281,7 +281,7 @@ class FunctionsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/memories.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
sqlalchemy
import
Column
,
String
,
BigInteger
,
Text
...
...
@@ -80,25 +80,25 @@ class MemoriesTable:
)
db
.
commit
()
return
self
.
get_memory_by_id
(
id
)
except
:
except
Exception
:
return
None
def
get_memories
(
self
)
->
L
ist
[
MemoryModel
]:
def
get_memories
(
self
)
->
l
ist
[
MemoryModel
]:
with
get_db
()
as
db
:
try
:
memories
=
db
.
query
(
Memory
).
all
()
return
[
MemoryModel
.
model_validate
(
memory
)
for
memory
in
memories
]
except
:
except
Exception
:
return
None
def
get_memories_by_user_id
(
self
,
user_id
:
str
)
->
L
ist
[
MemoryModel
]:
def
get_memories_by_user_id
(
self
,
user_id
:
str
)
->
l
ist
[
MemoryModel
]:
with
get_db
()
as
db
:
try
:
memories
=
db
.
query
(
Memory
).
filter_by
(
user_id
=
user_id
).
all
()
return
[
MemoryModel
.
model_validate
(
memory
)
for
memory
in
memories
]
except
:
except
Exception
:
return
None
def
get_memory_by_id
(
self
,
id
:
str
)
->
Optional
[
MemoryModel
]:
...
...
@@ -107,7 +107,7 @@ class MemoriesTable:
try
:
memory
=
db
.
get
(
Memory
,
id
)
return
MemoryModel
.
model_validate
(
memory
)
except
:
except
Exception
:
return
None
def
delete_memory_by_id
(
self
,
id
:
str
)
->
bool
:
...
...
@@ -119,7 +119,7 @@ class MemoriesTable:
return
True
except
:
except
Exception
:
return
False
def
delete_memories_by_user_id
(
self
,
user_id
:
str
)
->
bool
:
...
...
@@ -130,7 +130,7 @@ class MemoriesTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
def
delete_memory_by_id_and_user_id
(
self
,
id
:
str
,
user_id
:
str
)
->
bool
:
...
...
@@ -141,7 +141,7 @@ class MemoriesTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/models.py
View file @
13b0e7d6
...
...
@@ -137,7 +137,7 @@ class ModelsTable:
print
(
e
)
return
None
def
get_all_models
(
self
)
->
L
ist
[
ModelModel
]:
def
get_all_models
(
self
)
->
l
ist
[
ModelModel
]:
with
get_db
()
as
db
:
return
[
ModelModel
.
model_validate
(
model
)
for
model
in
db
.
query
(
Model
).
all
()]
...
...
@@ -146,7 +146,7 @@ class ModelsTable:
with
get_db
()
as
db
:
model
=
db
.
get
(
Model
,
id
)
return
ModelModel
.
model_validate
(
model
)
except
:
except
Exception
:
return
None
def
update_model_by_id
(
self
,
id
:
str
,
model
:
ModelForm
)
->
Optional
[
ModelModel
]:
...
...
@@ -175,7 +175,7 @@ class ModelsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/prompts.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
time
from
sqlalchemy
import
String
,
Column
,
BigInteger
,
Text
...
...
@@ -79,10 +79,10 @@ class PromptsTable:
prompt
=
db
.
query
(
Prompt
).
filter_by
(
command
=
command
).
first
()
return
PromptModel
.
model_validate
(
prompt
)
except
:
except
Exception
:
return
None
def
get_prompts
(
self
)
->
L
ist
[
PromptModel
]:
def
get_prompts
(
self
)
->
l
ist
[
PromptModel
]:
with
get_db
()
as
db
:
return
[
...
...
@@ -101,7 +101,7 @@ class PromptsTable:
prompt
.
timestamp
=
int
(
time
.
time
())
db
.
commit
()
return
PromptModel
.
model_validate
(
prompt
)
except
:
except
Exception
:
return
None
def
delete_prompt_by_command
(
self
,
command
:
str
)
->
bool
:
...
...
@@ -112,7 +112,7 @@ class PromptsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/tags.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
json
import
uuid
...
...
@@ -69,11 +69,11 @@ class ChatIdTagForm(BaseModel):
class
TagChatIdsResponse
(
BaseModel
):
chat_ids
:
L
ist
[
str
]
chat_ids
:
l
ist
[
str
]
class
ChatTagsResponse
(
BaseModel
):
tags
:
L
ist
[
str
]
tags
:
l
ist
[
str
]
class
TagTable
:
...
...
@@ -109,7 +109,7 @@ class TagTable:
self
,
user_id
:
str
,
form_data
:
ChatIdTagForm
)
->
Optional
[
ChatIdTagModel
]:
tag
=
self
.
get_tag_by_name_and_user_id
(
form_data
.
tag_name
,
user_id
)
if
tag
==
None
:
if
tag
is
None
:
tag
=
self
.
insert_new_tag
(
form_data
.
tag_name
,
user_id
)
id
=
str
(
uuid
.
uuid4
())
...
...
@@ -132,10 +132,10 @@ class TagTable:
return
ChatIdTagModel
.
model_validate
(
result
)
else
:
return
None
except
:
except
Exception
:
return
None
def
get_tags_by_user_id
(
self
,
user_id
:
str
)
->
L
ist
[
TagModel
]:
def
get_tags_by_user_id
(
self
,
user_id
:
str
)
->
l
ist
[
TagModel
]:
with
get_db
()
as
db
:
tag_names
=
[
chat_id_tag
.
tag_name
...
...
@@ -159,7 +159,7 @@ class TagTable:
def
get_tags_by_chat_id_and_user_id
(
self
,
chat_id
:
str
,
user_id
:
str
)
->
L
ist
[
TagModel
]:
)
->
l
ist
[
TagModel
]:
with
get_db
()
as
db
:
tag_names
=
[
...
...
@@ -184,7 +184,7 @@ class TagTable:
def
get_chat_ids_by_tag_name_and_user_id
(
self
,
tag_name
:
str
,
user_id
:
str
)
->
L
ist
[
ChatIdTagModel
]:
)
->
l
ist
[
ChatIdTagModel
]:
with
get_db
()
as
db
:
return
[
...
...
backend/apps/webui/models/tools.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
from
typing
import
List
,
Optional
from
typing
import
Optional
import
time
import
logging
from
sqlalchemy
import
String
,
Column
,
BigInteger
,
Text
...
...
@@ -45,7 +45,7 @@ class ToolModel(BaseModel):
user_id
:
str
name
:
str
content
:
str
specs
:
L
ist
[
dict
]
specs
:
l
ist
[
dict
]
meta
:
ToolMeta
updated_at
:
int
# timestamp in epoch
created_at
:
int
# timestamp in epoch
...
...
@@ -81,7 +81,7 @@ class ToolValves(BaseModel):
class
ToolsTable
:
def
insert_new_tool
(
self
,
user_id
:
str
,
form_data
:
ToolForm
,
specs
:
L
ist
[
dict
]
self
,
user_id
:
str
,
form_data
:
ToolForm
,
specs
:
l
ist
[
dict
]
)
->
Optional
[
ToolModel
]:
with
get_db
()
as
db
:
...
...
@@ -115,10 +115,10 @@ class ToolsTable:
tool
=
db
.
get
(
Tool
,
id
)
return
ToolModel
.
model_validate
(
tool
)
except
:
except
Exception
:
return
None
def
get_tools
(
self
)
->
L
ist
[
ToolModel
]:
def
get_tools
(
self
)
->
l
ist
[
ToolModel
]:
with
get_db
()
as
db
:
return
[
ToolModel
.
model_validate
(
tool
)
for
tool
in
db
.
query
(
Tool
).
all
()]
...
...
@@ -141,7 +141,7 @@ class ToolsTable:
)
db
.
commit
()
return
self
.
get_tool_by_id
(
id
)
except
:
except
Exception
:
return
None
def
get_user_valves_by_id_and_user_id
(
...
...
@@ -196,7 +196,7 @@ class ToolsTable:
tool
=
db
.
query
(
Tool
).
get
(
id
)
db
.
refresh
(
tool
)
return
ToolModel
.
model_validate
(
tool
)
except
:
except
Exception
:
return
None
def
delete_tool_by_id
(
self
,
id
:
str
)
->
bool
:
...
...
@@ -206,7 +206,7 @@ class ToolsTable:
db
.
commit
()
return
True
except
:
except
Exception
:
return
False
...
...
backend/apps/webui/models/users.py
View file @
13b0e7d6
from
pydantic
import
BaseModel
,
ConfigDict
,
parse_obj_as
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
import
time
from
sqlalchemy
import
String
,
Column
,
BigInteger
,
Text
...
...
@@ -125,7 +125,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
api_key
=
api_key
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
get_user_by_email
(
self
,
email
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -134,7 +134,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
email
=
email
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
get_user_by_oauth_sub
(
self
,
sub
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -143,10 +143,10 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
oauth_sub
=
sub
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
get_users
(
self
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
L
ist
[
UserModel
]:
def
get_users
(
self
,
skip
:
int
=
0
,
limit
:
int
=
50
)
->
l
ist
[
UserModel
]:
with
get_db
()
as
db
:
users
=
(
db
.
query
(
User
)
...
...
@@ -164,7 +164,7 @@ class UsersTable:
with
get_db
()
as
db
:
user
=
db
.
query
(
User
).
order_by
(
User
.
created_at
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_role_by_id
(
self
,
id
:
str
,
role
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -174,7 +174,7 @@ class UsersTable:
db
.
commit
()
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_profile_image_url_by_id
(
...
...
@@ -189,7 +189,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_last_active_by_id
(
self
,
id
:
str
)
->
Optional
[
UserModel
]:
...
...
@@ -203,7 +203,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_oauth_sub_by_id
(
...
...
@@ -216,7 +216,7 @@ class UsersTable:
user
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
first
()
return
UserModel
.
model_validate
(
user
)
except
:
except
Exception
:
return
None
def
update_user_by_id
(
self
,
id
:
str
,
updated
:
dict
)
->
Optional
[
UserModel
]:
...
...
@@ -245,7 +245,7 @@ class UsersTable:
return
True
else
:
return
False
except
:
except
Exception
:
return
False
def
update_user_api_key_by_id
(
self
,
id
:
str
,
api_key
:
str
)
->
str
:
...
...
@@ -254,7 +254,7 @@ class UsersTable:
result
=
db
.
query
(
User
).
filter_by
(
id
=
id
).
update
({
"api_key"
:
api_key
})
db
.
commit
()
return
True
if
result
==
1
else
False
except
:
except
Exception
:
return
False
def
get_user_api_key_by_id
(
self
,
id
:
str
)
->
Optional
[
str
]:
...
...
backend/apps/webui/routers/chats.py
View file @
13b0e7d6
from
fastapi
import
Depends
,
Request
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
utils.utils
import
get_verified_user
,
get_admin_user
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -40,8 +40,8 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/list"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/list"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_session_user_chat_list
(
user
=
Depends
(
get_verified_user
),
page
:
Optional
[
int
]
=
None
):
...
...
@@ -80,7 +80,7 @@ async def delete_all_user_chats(request: Request, user=Depends(get_verified_user
############################
@
router
.
get
(
"/list/user/{user_id}"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/list/user/{user_id}"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_user_chat_list_by_user_id
(
user_id
:
str
,
user
=
Depends
(
get_admin_user
),
...
...
@@ -119,7 +119,7 @@ async def create_new_chat(form_data: ChatForm, user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/all"
,
response_model
=
L
ist
[
ChatResponse
])
@
router
.
get
(
"/all"
,
response_model
=
l
ist
[
ChatResponse
])
async
def
get_user_chats
(
user
=
Depends
(
get_verified_user
)):
return
[
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
...
...
@@ -132,7 +132,7 @@ async def get_user_chats(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/all/archived"
,
response_model
=
L
ist
[
ChatResponse
])
@
router
.
get
(
"/all/archived"
,
response_model
=
l
ist
[
ChatResponse
])
async
def
get_user_archived_chats
(
user
=
Depends
(
get_verified_user
)):
return
[
ChatResponse
(
**
{
**
chat
.
model_dump
(),
"chat"
:
json
.
loads
(
chat
.
chat
)})
...
...
@@ -145,7 +145,7 @@ async def get_user_archived_chats(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/all/db"
,
response_model
=
L
ist
[
ChatResponse
])
@
router
.
get
(
"/all/db"
,
response_model
=
l
ist
[
ChatResponse
])
async
def
get_all_user_chats_in_db
(
user
=
Depends
(
get_admin_user
)):
if
not
ENABLE_ADMIN_EXPORT
:
raise
HTTPException
(
...
...
@@ -163,7 +163,7 @@ async def get_all_user_chats_in_db(user=Depends(get_admin_user)):
############################
@
router
.
get
(
"/archived"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
get
(
"/archived"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_archived_session_user_chat_list
(
user
=
Depends
(
get_verified_user
),
skip
:
int
=
0
,
limit
:
int
=
50
):
...
...
@@ -216,7 +216,7 @@ class TagNameForm(BaseModel):
limit
:
Optional
[
int
]
=
50
@
router
.
post
(
"/tags"
,
response_model
=
L
ist
[
ChatTitleIdResponse
])
@
router
.
post
(
"/tags"
,
response_model
=
l
ist
[
ChatTitleIdResponse
])
async
def
get_user_chat_list_by_tag_name
(
form_data
:
TagNameForm
,
user
=
Depends
(
get_verified_user
)
):
...
...
@@ -241,7 +241,7 @@ async def get_user_chat_list_by_tag_name(
############################
@
router
.
get
(
"/tags/all"
,
response_model
=
L
ist
[
TagModel
])
@
router
.
get
(
"/tags/all"
,
response_model
=
l
ist
[
TagModel
])
async
def
get_all_tags
(
user
=
Depends
(
get_verified_user
)):
try
:
tags
=
Tags
.
get_tags_by_user_id
(
user
.
id
)
...
...
@@ -417,7 +417,7 @@ async def delete_shared_chat_by_id(id: str, user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/{id}/tags"
,
response_model
=
L
ist
[
TagModel
])
@
router
.
get
(
"/{id}/tags"
,
response_model
=
l
ist
[
TagModel
])
async
def
get_chat_tags_by_id
(
id
:
str
,
user
=
Depends
(
get_verified_user
)):
tags
=
Tags
.
get_tags_by_chat_id_and_user_id
(
id
,
user
.
id
)
...
...
backend/apps/webui/routers/configs.py
View file @
13b0e7d6
from
fastapi
import
Response
,
Request
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
from
typing
import
Union
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -29,12 +29,12 @@ class SetDefaultModelsForm(BaseModel):
class
PromptSuggestion
(
BaseModel
):
title
:
L
ist
[
str
]
title
:
l
ist
[
str
]
content
:
str
class
SetDefaultSuggestionsForm
(
BaseModel
):
suggestions
:
L
ist
[
PromptSuggestion
]
suggestions
:
l
ist
[
PromptSuggestion
]
############################
...
...
@@ -50,7 +50,7 @@ async def set_global_default_models(
return
request
.
app
.
state
.
config
.
DEFAULT_MODELS
@
router
.
post
(
"/default/suggestions"
,
response_model
=
L
ist
[
PromptSuggestion
])
@
router
.
post
(
"/default/suggestions"
,
response_model
=
l
ist
[
PromptSuggestion
])
async
def
set_global_default_suggestions
(
request
:
Request
,
form_data
:
SetDefaultSuggestionsForm
,
...
...
@@ -67,10 +67,10 @@ async def set_global_default_suggestions(
class
SetBannersForm
(
BaseModel
):
banners
:
L
ist
[
BannerModel
]
banners
:
l
ist
[
BannerModel
]
@
router
.
post
(
"/banners"
,
response_model
=
L
ist
[
BannerModel
])
@
router
.
post
(
"/banners"
,
response_model
=
l
ist
[
BannerModel
])
async
def
set_banners
(
request
:
Request
,
form_data
:
SetBannersForm
,
...
...
@@ -81,7 +81,7 @@ async def set_banners(
return
request
.
app
.
state
.
config
.
BANNERS
@
router
.
get
(
"/banners"
,
response_model
=
L
ist
[
BannerModel
])
@
router
.
get
(
"/banners"
,
response_model
=
l
ist
[
BannerModel
])
async
def
get_banners
(
request
:
Request
,
user
=
Depends
(
get_verified_user
),
...
...
backend/apps/webui/routers/documents.py
View file @
13b0e7d6
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -24,7 +24,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
DocumentResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
DocumentResponse
])
async
def
get_documents
(
user
=
Depends
(
get_verified_user
)):
docs
=
[
DocumentResponse
(
...
...
@@ -46,7 +46,7 @@ async def get_documents(user=Depends(get_verified_user)):
@
router
.
post
(
"/create"
,
response_model
=
Optional
[
DocumentResponse
])
async
def
create_new_doc
(
form_data
:
DocumentForm
,
user
=
Depends
(
get_admin_user
)):
doc
=
Documents
.
get_doc_by_name
(
form_data
.
name
)
if
doc
==
None
:
if
doc
is
None
:
doc
=
Documents
.
insert_new_doc
(
user
.
id
,
form_data
)
if
doc
:
...
...
@@ -102,7 +102,7 @@ class TagItem(BaseModel):
class
TagDocumentForm
(
BaseModel
):
name
:
str
tags
:
L
ist
[
dict
]
tags
:
l
ist
[
dict
]
@
router
.
post
(
"/doc/tags"
,
response_model
=
Optional
[
DocumentResponse
])
...
...
backend/apps/webui/routers/files.py
View file @
13b0e7d6
...
...
@@ -11,7 +11,7 @@ from fastapi import (
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
pathlib
import
Path
from
fastapi
import
APIRouter
...
...
@@ -104,7 +104,7 @@ def upload_file(file: UploadFile = File(...), user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
FileModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
FileModel
])
async
def
list_files
(
user
=
Depends
(
get_verified_user
)):
files
=
Files
.
get_files
()
return
files
...
...
backend/apps/webui/routers/functions.py
View file @
13b0e7d6
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
,
Request
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -30,7 +30,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
FunctionResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
FunctionResponse
])
async
def
get_functions
(
user
=
Depends
(
get_verified_user
)):
return
Functions
.
get_functions
()
...
...
@@ -40,7 +40,7 @@ async def get_functions(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/export"
,
response_model
=
L
ist
[
FunctionModel
])
@
router
.
get
(
"/export"
,
response_model
=
l
ist
[
FunctionModel
])
async
def
get_functions
(
user
=
Depends
(
get_admin_user
)):
return
Functions
.
get_functions
()
...
...
@@ -63,7 +63,7 @@ async def create_new_function(
form_data
.
id
=
form_data
.
id
.
lower
()
function
=
Functions
.
get_function_by_id
(
form_data
.
id
)
if
function
==
None
:
if
function
is
None
:
function_path
=
os
.
path
.
join
(
FUNCTIONS_DIR
,
f
"
{
form_data
.
id
}
.py"
)
try
:
with
open
(
function_path
,
"w"
)
as
function_file
:
...
...
@@ -235,7 +235,7 @@ async def delete_function_by_id(
function_path
=
os
.
path
.
join
(
FUNCTIONS_DIR
,
f
"
{
id
}
.py"
)
try
:
os
.
remove
(
function_path
)
except
:
except
Exception
:
pass
return
result
...
...
backend/apps/webui/routers/memories.py
View file @
13b0e7d6
from
fastapi
import
Response
,
Request
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -30,7 +30,7 @@ async def get_embeddings(request: Request):
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
MemoryModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
MemoryModel
])
async
def
get_memories
(
user
=
Depends
(
get_verified_user
)):
return
Memories
.
get_memories_by_user_id
(
user
.
id
)
...
...
backend/apps/webui/routers/models.py
View file @
13b0e7d6
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
,
Request
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -18,7 +18,7 @@ router = APIRouter()
###########################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
ModelResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
ModelResponse
])
async
def
get_models
(
user
=
Depends
(
get_verified_user
)):
return
Models
.
get_all_models
()
...
...
backend/apps/webui/routers/prompts.py
View file @
13b0e7d6
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -18,7 +18,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
PromptModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
PromptModel
])
async
def
get_prompts
(
user
=
Depends
(
get_verified_user
)):
return
Prompts
.
get_prompts
()
...
...
@@ -31,7 +31,7 @@ async def get_prompts(user=Depends(get_verified_user)):
@
router
.
post
(
"/create"
,
response_model
=
Optional
[
PromptModel
])
async
def
create_new_prompt
(
form_data
:
PromptForm
,
user
=
Depends
(
get_admin_user
)):
prompt
=
Prompts
.
get_prompt_by_command
(
form_data
.
command
)
if
prompt
==
None
:
if
prompt
is
None
:
prompt
=
Prompts
.
insert_new_prompt
(
user
.
id
,
form_data
)
if
prompt
:
...
...
backend/apps/webui/routers/tools.py
View file @
13b0e7d6
from
fastapi
import
Depends
,
HTTPException
,
status
,
Request
from
typing
import
List
,
Optional
from
typing
import
Optional
from
fastapi
import
APIRouter
...
...
@@ -27,7 +27,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
ToolResponse
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
ToolResponse
])
async
def
get_toolkits
(
user
=
Depends
(
get_verified_user
)):
toolkits
=
[
toolkit
for
toolkit
in
Tools
.
get_tools
()]
return
toolkits
...
...
@@ -38,7 +38,7 @@ async def get_toolkits(user=Depends(get_verified_user)):
############################
@
router
.
get
(
"/export"
,
response_model
=
L
ist
[
ToolModel
])
@
router
.
get
(
"/export"
,
response_model
=
l
ist
[
ToolModel
])
async
def
get_toolkits
(
user
=
Depends
(
get_admin_user
)):
toolkits
=
[
toolkit
for
toolkit
in
Tools
.
get_tools
()]
return
toolkits
...
...
backend/apps/webui/routers/users.py
View file @
13b0e7d6
from
fastapi
import
Response
,
Request
from
fastapi
import
Depends
,
FastAPI
,
HTTPException
,
status
from
datetime
import
datetime
,
timedelta
from
typing
import
List
,
Union
,
Optional
from
typing
import
Union
,
Optional
from
fastapi
import
APIRouter
from
pydantic
import
BaseModel
...
...
@@ -39,7 +39,7 @@ router = APIRouter()
############################
@
router
.
get
(
"/"
,
response_model
=
L
ist
[
UserModel
])
@
router
.
get
(
"/"
,
response_model
=
l
ist
[
UserModel
])
async
def
get_users
(
skip
:
int
=
0
,
limit
:
int
=
50
,
user
=
Depends
(
get_admin_user
)):
return
Users
.
get_users
(
skip
,
limit
)
...
...
Prev
1
2
3
4
5
6
7
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment