Fix delete image bug

This commit is contained in:
Weitheng Haw 2025-01-28 16:12:18 +00:00
parent 8a70da4952
commit b481e242fb
2 changed files with 13 additions and 10 deletions

View File

@ -110,6 +110,7 @@ def deregister_faces(request: Request, name: str, body: dict = None):
json: dict[str, any] = body or {}
list_of_ids = json.get("ids", [])
delete_directory = json.get("delete_directory", False) # New flag for directory deletion
if not list_of_ids:
return JSONResponse(
@ -125,18 +126,18 @@ def deregister_faces(request: Request, name: str, body: dict = None):
content={"message": f"Face '{name}' not found", "success": False},
)
context: EmbeddingsContext = request.app.embeddings
context.delete_face_ids(
name, map(lambda file: sanitize_filename(file), list_of_ids)
)
try:
if os.path.exists(face_dir):
if delete_directory:
shutil.rmtree(face_dir)
else:
context: EmbeddingsContext = request.app.embeddings
context.delete_face_ids(
name, map(lambda file: sanitize_filename(file), list_of_ids)
)
except Exception as e:
logger.error(f"Failed to remove directory {face_dir}: {str(e)}")
logger.error(f"Failed to delete face: {str(e)}")
return JSONResponse(
content={"success": False, "message": f"Failed to remove directory: {str(e)}"},
content={"success": False, "message": f"Failed to delete face: {str(e)}"},
status_code=500,
)

View File

@ -169,6 +169,7 @@ export default function FaceLibrary() {
});
setRenameDialog(false);
setPageToggle(renameData.newName);
setRenameData({ oldName: '', newName: '' });
await refreshFaces();
toast.success("Successfully renamed face", { position: "top-center" });
@ -181,13 +182,14 @@ export default function FaceLibrary() {
} finally {
setIsRenaming(false);
}
}, [renameData, refreshFaces]);
}, [renameData, refreshFaces, setPageToggle]);
const deleteFace = useCallback(async () => {
try {
const images = faceData[renameData.oldName] || [];
await axios.post(`/faces/${renameData.oldName}/delete`, {
ids: images.length ? images : ['dummy']
ids: images.length ? images : ['dummy'],
delete_directory: true
});
setRenameDialog(false);