mirror of
https://github.com/open-webui/open-webui
synced 2025-06-23 02:16:52 +00:00
Update folders.py
This commit is contained in:
parent
9e7735e695
commit
92af07afce
@ -30,6 +30,7 @@ class Folder(Base):
|
|||||||
items = Column(JSON, nullable=True)
|
items = Column(JSON, nullable=True)
|
||||||
meta = Column(JSON, nullable=True)
|
meta = Column(JSON, nullable=True)
|
||||||
is_expanded = Column(Boolean, default=False)
|
is_expanded = Column(Boolean, default=False)
|
||||||
|
system_prompt = Column(Text, nullable=True)
|
||||||
created_at = Column(BigInteger)
|
created_at = Column(BigInteger)
|
||||||
updated_at = Column(BigInteger)
|
updated_at = Column(BigInteger)
|
||||||
|
|
||||||
@ -42,6 +43,7 @@ class FolderModel(BaseModel):
|
|||||||
items: Optional[dict] = None
|
items: Optional[dict] = None
|
||||||
meta: Optional[dict] = None
|
meta: Optional[dict] = None
|
||||||
is_expanded: bool = False
|
is_expanded: bool = False
|
||||||
|
system_prompt: Optional[str] = None
|
||||||
created_at: int
|
created_at: int
|
||||||
updated_at: int
|
updated_at: int
|
||||||
|
|
||||||
@ -55,6 +57,7 @@ class FolderModel(BaseModel):
|
|||||||
|
|
||||||
class FolderForm(BaseModel):
|
class FolderForm(BaseModel):
|
||||||
name: str
|
name: str
|
||||||
|
system_prompt: Optional[str] = None
|
||||||
model_config = ConfigDict(extra="allow")
|
model_config = ConfigDict(extra="allow")
|
||||||
|
|
||||||
|
|
||||||
@ -70,6 +73,7 @@ class FolderTable:
|
|||||||
"user_id": user_id,
|
"user_id": user_id,
|
||||||
"name": name,
|
"name": name,
|
||||||
"parent_id": parent_id,
|
"parent_id": parent_id,
|
||||||
|
"system_prompt": None,
|
||||||
"created_at": int(time.time()),
|
"created_at": int(time.time()),
|
||||||
"updated_at": int(time.time()),
|
"updated_at": int(time.time()),
|
||||||
}
|
}
|
||||||
@ -236,6 +240,49 @@ class FolderTable:
|
|||||||
log.error(f"update_folder: {e}")
|
log.error(f"update_folder: {e}")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def update_folder_details_by_id_and_user_id(
|
||||||
|
self,
|
||||||
|
id: str,
|
||||||
|
user_id: str,
|
||||||
|
name: str,
|
||||||
|
system_prompt: Optional[str],
|
||||||
|
) -> Optional[FolderModel]:
|
||||||
|
try:
|
||||||
|
with get_db() as db:
|
||||||
|
folder = db.query(Folder).filter_by(id=id, user_id=user_id).first()
|
||||||
|
if not folder:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# Check if a folder with the new name already exists at the same parent level
|
||||||
|
# Exclude the current folder being renamed from the check
|
||||||
|
if name != folder.name:
|
||||||
|
existing_folder = (
|
||||||
|
db.query(Folder)
|
||||||
|
.filter(
|
||||||
|
Folder.name == name,
|
||||||
|
Folder.parent_id == folder.parent_id,
|
||||||
|
Folder.user_id == user_id,
|
||||||
|
Folder.id != id,
|
||||||
|
)
|
||||||
|
.first()
|
||||||
|
)
|
||||||
|
if existing_folder:
|
||||||
|
log.warning(
|
||||||
|
f"Folder with name '{name}' already exists for user_id '{user_id}' at parent_id '{folder.parent_id}'"
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
|
||||||
|
folder.name = name
|
||||||
|
folder.system_prompt = system_prompt
|
||||||
|
folder.updated_at = int(time.time())
|
||||||
|
db.commit()
|
||||||
|
db.refresh(folder)
|
||||||
|
return FolderModel.model_validate(folder)
|
||||||
|
except Exception as e:
|
||||||
|
log.error(f"Error updating folder details: {e}")
|
||||||
|
db.rollback()
|
||||||
|
return None
|
||||||
|
|
||||||
def delete_folder_by_id_and_user_id(
|
def delete_folder_by_id_and_user_id(
|
||||||
self, id: str, user_id: str, delete_chats=True
|
self, id: str, user_id: str, delete_chats=True
|
||||||
) -> bool:
|
) -> bool:
|
||||||
|
Loading…
Reference in New Issue
Block a user