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
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user