added support for recycle bin
This commit is contained in:
@@ -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"<id: {self.id}, import_path: {self.import_path}>"
|
||||
return f"<id: {self.id}, import_path: {self.import_path}, recycle_bin_path: {self.recycle_bin_path}>"
|
||||
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user