mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-17 14:55:23 +00:00
refac/fix: folders
This commit is contained in:
parent
eaf786c1ef
commit
5448618dd5
1 changed files with 35 additions and 20 deletions
|
|
@ -50,7 +50,15 @@ async def get_folders(user=Depends(get_verified_user)):
|
||||||
folders = Folders.get_folders_by_user_id(user.id)
|
folders = Folders.get_folders_by_user_id(user.id)
|
||||||
|
|
||||||
# Verify folder data integrity
|
# Verify folder data integrity
|
||||||
|
folder_list = []
|
||||||
for folder in folders:
|
for folder in folders:
|
||||||
|
if folder.parent_id and not Folders.get_folder_by_id_and_user_id(
|
||||||
|
folder.parent_id, user.id
|
||||||
|
):
|
||||||
|
folder = Folders.update_folder_parent_id_by_id_and_user_id(
|
||||||
|
folder.id, user.id, None
|
||||||
|
)
|
||||||
|
|
||||||
if folder.data:
|
if folder.data:
|
||||||
if "files" in folder.data:
|
if "files" in folder.data:
|
||||||
valid_files = []
|
valid_files = []
|
||||||
|
|
@ -74,12 +82,9 @@ async def get_folders(user=Depends(get_verified_user)):
|
||||||
folder.id, user.id, FolderUpdateForm(data=folder.data)
|
folder.id, user.id, FolderUpdateForm(data=folder.data)
|
||||||
)
|
)
|
||||||
|
|
||||||
return [
|
folder_list.append(FolderNameIdResponse(**folder.model_dump()))
|
||||||
{
|
|
||||||
**folder.model_dump(),
|
return folder_list
|
||||||
}
|
|
||||||
for folder in folders
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
############################
|
||||||
|
|
@ -265,21 +270,31 @@ async def delete_folder_by_id(
|
||||||
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
|
||||||
)
|
)
|
||||||
|
|
||||||
folder = Folders.get_folder_by_id_and_user_id(id, user.id)
|
folders = []
|
||||||
if folder:
|
folders.append(Folders.get_folder_by_id_and_user_id(id, user.id))
|
||||||
try:
|
while folders:
|
||||||
folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
|
folder = folders.pop()
|
||||||
for folder_id in folder_ids:
|
if folder:
|
||||||
Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)
|
try:
|
||||||
|
folder_ids = Folders.delete_folder_by_id_and_user_id(id, user.id)
|
||||||
|
for folder_id in folder_ids:
|
||||||
|
Chats.delete_chats_by_user_id_and_folder_id(user.id, folder_id)
|
||||||
|
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
log.exception(e)
|
||||||
|
log.error(f"Error deleting folder: {id}")
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
detail=ERROR_MESSAGES.DEFAULT("Error deleting folder"),
|
||||||
|
)
|
||||||
|
finally:
|
||||||
|
# Get all subfolders
|
||||||
|
subfolders = Folders.get_folders_by_parent_id_and_user_id(
|
||||||
|
folder.id, user.id
|
||||||
|
)
|
||||||
|
folders.extend(subfolders)
|
||||||
|
|
||||||
return True
|
|
||||||
except Exception as e:
|
|
||||||
log.exception(e)
|
|
||||||
log.error(f"Error deleting folder: {id}")
|
|
||||||
raise HTTPException(
|
|
||||||
status_code=status.HTTP_400_BAD_REQUEST,
|
|
||||||
detail=ERROR_MESSAGES.DEFAULT("Error deleting folder"),
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_404_NOT_FOUND,
|
status_code=status.HTTP_404_NOT_FOUND,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue