reset sub dir path properly based on parents path. Also fixed bug-69 - FullPathOnFS() was wrong for first dir in a path
This commit is contained in:
@@ -160,15 +160,17 @@ class Entry(Base):
|
|||||||
file_details = relationship( "File", uselist=False )
|
file_details = relationship( "File", uselist=False )
|
||||||
in_dir = relationship ("Dir", secondary="entry_dir_link", uselist=False )
|
in_dir = relationship ("Dir", secondary="entry_dir_link", uselist=False )
|
||||||
|
|
||||||
|
# DDP: I think I need to test this outside of larger code, I think a
|
||||||
|
# directory has a full path of real full Path + '/' + self.name
|
||||||
def FullPathOnFS(self):
|
def FullPathOnFS(self):
|
||||||
if self.in_dir:
|
if self.in_dir:
|
||||||
s=self.in_dir.in_path.path_prefix + '/'
|
s=self.in_dir.in_path.path_prefix + '/'
|
||||||
if len(self.in_dir.rel_path) > 0:
|
if len(self.in_dir.rel_path) > 0:
|
||||||
s += self.in_dir.rel_path + '/'
|
s += self.in_dir.rel_path + '/'
|
||||||
|
s += self.name
|
||||||
# this occurs when we have a dir that is the root of a path
|
# this occurs when we have a dir that is the root of a path
|
||||||
else:
|
else:
|
||||||
s=self.dir_details.in_path.path_prefix+'/'
|
s=self.dir_details.in_path.path_prefix
|
||||||
s += self.name
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
@@ -1011,6 +1013,7 @@ def MoveFileToRecycleBin(job,del_me):
|
|||||||
# moves the file into the folder on the FS and then changes the path to the appropriate one
|
# moves the file into the folder on the FS and then changes the path to the appropriate one
|
||||||
####################################################################################################################################
|
####################################################################################################################################
|
||||||
def MoveFileToNewFolderInStorage(job,move_me, dst_storage_path, dst_rel_path):
|
def MoveFileToNewFolderInStorage(job,move_me, dst_storage_path, dst_rel_path):
|
||||||
|
orig_parent_dir_e=session.query(Entry).get(move_me.in_dir.eid)
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print( f"MoveFileToNewFolderInStorage: {move_me} to {dst_storage_path} in new? folder: {dst_storage_path}")
|
print( f"MoveFileToNewFolderInStorage: {move_me} to {dst_storage_path} in new? folder: {dst_storage_path}")
|
||||||
try:
|
try:
|
||||||
@@ -1048,27 +1051,28 @@ def MoveFileToNewFolderInStorage(job,move_me, dst_storage_path, dst_rel_path):
|
|||||||
if DEBUG:
|
if DEBUG:
|
||||||
print( f"{move_me.name} is a dir, so reset its dir_details path to the new path too" )
|
print( f"{move_me.name} is a dir, so reset its dir_details path to the new path too" )
|
||||||
move_me.dir_details.in_path = dst_storage_path
|
move_me.dir_details.in_path = dst_storage_path
|
||||||
move_me.dir_details.rel_path = dst_rel_path + '/' + move_me.dir_details.rel_path
|
move_me.dir_details.rel_path = move_me.in_dir.rel_path+'/'+move_me.name
|
||||||
ResetAnySubdirPaths( move_me, dst_storage_path, dst_rel_path )
|
ResetAnySubdirPaths( move_me, dst_storage_path, move_me.dir_details.rel_path )
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print( f"DONE change of {move_me} in_dir to {new_dir} created above" )
|
print( f"DONE change of {move_me} in_dir to {new_dir} created above" )
|
||||||
session.add(move_me)
|
session.add(move_me)
|
||||||
|
CleanUpDirInDB(job, orig_parent_dir_e)
|
||||||
AddLogForJob(job, f"{move_me.name} - (moved to {os.path.dirname(move_me.FullPathOnFS())})" )
|
AddLogForJob(job, f"{move_me.name} - (moved to {os.path.dirname(move_me.FullPathOnFS())})" )
|
||||||
return
|
return
|
||||||
|
|
||||||
def ResetAnySubdirPaths( moving_dir, dst_storage_path, dst_rel_path ):
|
def ResetAnySubdirPaths( moving_dir, dst_storage_path, parent_rel_path ):
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print( f"ResetAnySubdirPaths( {moving_dir.name}, {dst_storage_path.path_prefix}, {dst_rel_path} )" )
|
print( f"ResetAnySubdirPaths( {moving_dir.name}, {dst_storage_path.path_prefix}, {parent_rel_path} )" )
|
||||||
sub_dirs = session.query(Entry).join(FileType).join(EntryDirLink).filter(EntryDirLink.dir_eid==moving_dir.id).filter(FileType.name=='Directory').all()
|
sub_dirs = session.query(Entry).join(FileType).join(EntryDirLink).filter(EntryDirLink.dir_eid==moving_dir.id).filter(FileType.name=='Directory').all()
|
||||||
for sub in sub_dirs:
|
for sub in sub_dirs:
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print( f"ResetAnySubdirPaths: WAS sub={sub.name}, ip={sub.in_dir.in_path.path_prefix}, rp={sub.dir_details.rel_path}" )
|
print( f"ResetAnySubdirPaths: WAS sub={sub.name}, ip={sub.in_dir.in_path.path_prefix}, rp={sub.dir_details.rel_path}" )
|
||||||
sub.in_path = dst_storage_path
|
sub.in_path = dst_storage_path
|
||||||
sub.dir_details.in_path = dst_storage_path
|
sub.dir_details.in_path = dst_storage_path
|
||||||
sub.dir_details.rel_path = dst_rel_path + '/' + sub.dir_details.rel_path
|
sub.dir_details.rel_path = parent_rel_path + '/' + sub.name
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print( f"ResetAnySubdirPaths: NOW sub={sub.name}, ip={sub.in_dir.in_path.path_prefix}, rp={sub.dir_details.rel_path}" )
|
print( f"ResetAnySubdirPaths: NOW sub={sub.name}, ip={sub.in_dir.in_path.path_prefix}, rp={sub.dir_details.rel_path}" )
|
||||||
ResetAnySubdirPaths( sub, dst_storage_path, dst_rel_path )
|
ResetAnySubdirPaths( sub, dst_storage_path, sub.dir_details.rel_path )
|
||||||
return
|
return
|
||||||
|
|
||||||
####################################################################################################################################
|
####################################################################################################################################
|
||||||
|
|||||||
Reference in New Issue
Block a user