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 )
|
id = Column(Integer, Sequence('settings_id_seq'), primary_key=True )
|
||||||
import_path = Column(String)
|
import_path = Column(String)
|
||||||
storage_path = Column(String)
|
storage_path = Column(String)
|
||||||
|
recycle_bin_path = Column(String)
|
||||||
|
|
||||||
def __repr__(self):
|
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):
|
class PersonRefimgLink(Base):
|
||||||
__tablename__ = "person_refimg_link"
|
__tablename__ = "person_refimg_link"
|
||||||
@@ -869,6 +870,19 @@ def CheckForDups(job):
|
|||||||
FinishJob(job, f"Finished Looking for Duplicates")
|
FinishJob(job, f"Finished Looking for Duplicates")
|
||||||
return
|
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):
|
def RemoveDups(job):
|
||||||
# clear FE message we are deleting dups for this now...
|
# 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]
|
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}" )
|
AddLogForJob(job, f"Keep duplicate file: {found.in_dir[0].path_prefix}/{found.name}" )
|
||||||
for del_me in del_me_lst:
|
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}" )
|
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)
|
RemoveFileFromDB(del_me.id)
|
||||||
|
|
||||||
if 'kdid-' in jex.name:
|
if 'kdid-' in jex.name:
|
||||||
@@ -924,7 +938,7 @@ def RemoveDups(job):
|
|||||||
else:
|
else:
|
||||||
AddLogForJob(job, f"Keep duplicate file: {found.in_dir[0].path_prefix}/{found.name}" )
|
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}" )
|
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)
|
RemoveFileFromDB(del_me.id)
|
||||||
dup_cnt += 1
|
dup_cnt += 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user