From e3f2870197cb6a3772e33eb97a16d688b1669df2 Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Fri, 2 Apr 2021 15:11:47 +1100 Subject: [PATCH] added support for recycle bin --- pa_job_manager.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pa_job_manager.py b/pa_job_manager.py index d68c793..d88114e 100644 --- a/pa_job_manager.py +++ b/pa_job_manager.py @@ -142,9 +142,10 @@ class Settings(Base): id = Column(Integer, Sequence('settings_id_seq'), primary_key=True ) import_path = Column(String) storage_path = Column(String) + recycle_bin_path = Column(String) def __repr__(self): - return f"" + return f"" class PersonRefimgLink(Base): __tablename__ = "person_refimg_link" @@ -869,6 +870,19 @@ def CheckForDups(job): FinishJob(job, f"Finished Looking for Duplicates") return +def RemoveFileFromFS( del_me ): + try: + settings = session.query(Settings).first() + m=re.search( r'^static/(.+)', del_me.in_dir[0].path_prefix) + dst_dir=settings.recycle_bin_path + m[1] + '/' + os.makedirs( dst_dir,mode=0o777, exist_ok=True ) + src=del_me.in_dir[0].path_prefix+'/'+del_me.name + dst=dst_dir + '/' + del_me.name + os.replace( src, dst ) + except Exception as e: + print( f"Failed to remove file from filesystem - which={src}, err: {e}") + return + def RemoveDups(job): # clear FE message we are deleting dups for this now... fe_msg_id =[jex.value for jex in job.extra if jex.name == "fe_msg_id"][0] @@ -899,7 +913,7 @@ def RemoveDups(job): AddLogForJob(job, f"Keep duplicate file: {found.in_dir[0].path_prefix}/{found.name}" ) for del_me in del_me_lst: AddLogForJob(job, f"Remove duplicate (per file dup) file: {del_me.in_dir[0].path_prefix}/{del_me.name}" ) - os.remove( del_me.in_dir[0].path_prefix+'/'+del_me.name ) + RemoveFileFromFS( del_me ) RemoveFileFromDB(del_me.id) if 'kdid-' in jex.name: @@ -924,7 +938,7 @@ def RemoveDups(job): else: AddLogForJob(job, f"Keep duplicate file: {found.in_dir[0].path_prefix}/{found.name}" ) AddLogForJob(job, f"Remove duplicate (per path dup) file: {del_me.in_dir[0].path_prefix}/{del_me.name}" ) - os.remove( del_me.in_dir[0].path_prefix+'/'+del_me.name ) + RemoveFileFromFS( del_me ) RemoveFileFromDB(del_me.id) dup_cnt += 1