From 9f90cdaaac9317e4504fba59edcb255b08c9f68a Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Tue, 21 Sep 2021 00:37:39 +1000 Subject: [PATCH] fix up all the dumb bugs I introduced and clearly never tested when I tweaked the remove file/dir after if you move files on the FS out from under PA --- pa_job_manager.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/pa_job_manager.py b/pa_job_manager.py index 5f4d631..dfcb8d4 100644 --- a/pa_job_manager.py +++ b/pa_job_manager.py @@ -854,17 +854,17 @@ def ResetExistsOnFS(job, path): #################################################################################################################################### def RemoveEmtpyDirFromFS( job, del_me ): try: - os.rmdir( del_me.FullPathOnFS() ) + os.rmdir( del_me.PathOnFS() ) except Exception as e: - print( f"ERROR: Failed to remove file from filesystem - which={del_me.name}, err: {e}") + print( f"ERROR: Failed to remove dir from filesystem - which={del_me.PathOnFS()}, err: {e}") return def RemoveEmptyDirFromDB( job, del_me ): - session.query(EntryDirLink).filter(EntryDirLink.entry_id==del_me.id).delete() - session.query(PathDirLink).filter(PathDirLink.dir_eid==del_me.id).delete() - session.query(Dir).filter(Dir.eid==del_me.id).delete() - session.query(Entry).filter(Entry.id==del_me.id).delete() - AddLogForJob( job, f"INFO: Removing {del_me.name} from system as removing duplicates has left it empty" ) + session.query(EntryDirLink).filter(EntryDirLink.entry_id==del_me.eid).delete() + session.query(PathDirLink).filter(PathDirLink.dir_eid==del_me.eid).delete() + session.query(Dir).filter(Dir.eid==del_me.eid).delete() + session.query(Entry).filter(Entry.id==del_me.eid).delete() + AddLogForJob( job, f"INFO: Removing {del_me.PathOnFS()} from system as removing duplicates has left it empty" ) return #################################################################################################################################### @@ -874,20 +874,20 @@ def RemoveEmptyDirFromDB( job, del_me ): #################################################################################################################################### def CleanUpDirInDB(job, d): session.commit() - print( f"CleanUpDirInDB(): checking dir: {d.name} ({d.id})" ) - content = session.query(Entry).join(EntryDirLink).filter(EntryDirLink.dir_eid==d.id).first() + print( f"CleanUpDirInDB(): checking dir: {d.PathOnFS()} ({d.eid})" ) + content = session.query(Entry).join(EntryDirLink).filter(EntryDirLink.dir_eid==d.eid).first() if not content: - print( f" Dir {d.name} - {d.id} is empty - removing it" ) + print( f" Dir {d.PathOnFS()} - {d.eid} is empty - removing it" ) # get an Entry from DB (in_dir is a Dir) parent_dir = session.query(Entry).get(d.in_dir.eid) # okay remove this empty dir RemoveEmtpyDirFromFS( job, d ) RemoveEmptyDirFromDB( job, d) - print( f" Dir {d.name} is in {parent_dir.name} ({parent_dir.id}) -> check next" ) + print( f" Dir {d.PathOnFS()} is in {parent_dir.PathOnFS()} ({parent_dir.eid}) -> check next" ) # check to see if removing the empty dir has left the parent dir empty CleanUpDirInDB(job, parent_dir) else: - print( f"There is content (first entry: {content.name}) in {d.name} - finished for this dir" ) + print( f"There is content (first entry: {content.name}) in {d.PathOnFS()} - finished for this dir" ) return #################################################################################################################################### @@ -897,9 +897,13 @@ def CleanUpDirInDB(job, d): def RemoveFileFromDB(job, del_me): parent_dir=del_me.in_dir session.query(EntryDirLink).filter(EntryDirLink.entry_id==del_me.id).delete() + connected_faces=session.query(FaceFileLink).filter(FaceFileLink.file_eid==del_me.id).all() + for ffl in connected_faces: + session.query(FaceRefimgLink).filter(FaceRefimgLink.face_id==ffl.face_id).delete() + session.query(Face).filter(Face.id==ffl.face_id).delete() session.query(File).filter(File.eid==del_me.id).delete() session.query(Entry).filter(Entry.id==del_me.id).delete() - AddLogForJob( job, f"INFO: Removing {rm.name} from system as it is no longer on the file system") + AddLogForJob( job, f"INFO: Removing {del_me.name} from system as it is no longer on the file system") CleanUpDirInDB(job, parent_dir) return @@ -1058,7 +1062,7 @@ def HandleAnyFSDeletions(job): RemoveFileFromDB(job, rm) rm_cnt+=1 - rmdirs = session.query(Entry).filter(Entry.exists_on_fs==False,Entry.type_id==1).order_by(Entry.id.desc()).all() + rmdirs = session.query(Entry).filter(Entry.exists_on_fs==False,Entry.type_id==dtype.id).order_by(Entry.id.desc()).all() for rmdir in rmdirs: RemoveFileFromDB(job, rmdir) rm_cnt+=1