Update
svn: r7211
This commit is contained in:
parent
31f686f573
commit
cce28d2a5d
@ -517,7 +517,7 @@ class Convert2Abs(BatchOp):
|
|||||||
#An op to convert absolute paths to relative
|
#An op to convert absolute paths to relative
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
class Convert2Rel(BatchOp):
|
class Convert2Rel(BatchOp):
|
||||||
title = _('Convert paths from absolute to _relative')
|
title = _('Convert paths from absolute to r_elative')
|
||||||
description = _('This tool allows converting absolute media paths '
|
description = _('This tool allows converting absolute media paths '
|
||||||
'to the relative ones. A relative path allows to '
|
'to the relative ones. A relative path allows to '
|
||||||
'tie the file location to that of the database.')
|
'tie the file location to that of the database.')
|
||||||
@ -542,19 +542,37 @@ class Convert2Rel(BatchOp):
|
|||||||
if not self.prepared:
|
if not self.prepared:
|
||||||
self.prepare()
|
self.prepare()
|
||||||
self.set_total(len(self.handle_list))
|
self.set_total(len(self.handle_list))
|
||||||
dbpath = os.path.dirname(self.db.full_name)+'/'
|
db_dir = os.path.dirname(self.db.full_name)
|
||||||
for handle in self.handle_list:
|
for handle in self.handle_list:
|
||||||
obj = self.db.get_object_from_handle(handle)
|
obj = self.db.get_object_from_handle(handle)
|
||||||
new_path = self.get_rel_path(dbpath,obj.path)
|
new_path = self.get_rel_path(db_dir,obj.path)
|
||||||
obj.set_path(new_path)
|
obj.set_path(new_path)
|
||||||
self.db.commit_media_object(obj,self.trans)
|
self.db.commit_media_object(obj,self.trans)
|
||||||
self.update()
|
self.update()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def get_rel_path(self,dbpath,objpath):
|
def get_rel_path(self,db_dir,obj_path):
|
||||||
common_path = os.path.commonprefix([dbpath,objpath])
|
obj_dir = os.path.dirname(obj_path)
|
||||||
ndirs = dbpath.replace(common_path,'',1).count(os.path.sep)
|
obj_name = os.path.basename(obj_path)
|
||||||
return ('../'*ndirs + objpath.replace(common_path,'',1))
|
|
||||||
|
# This is the common directory in which both dirs are:
|
||||||
|
common_path = os.path.commonprefix([db_dir,obj_dir])
|
||||||
|
|
||||||
|
# These are both dirs relative to the common dir
|
||||||
|
db_dir_rem = db_dir.replace(common_path,'',1)
|
||||||
|
obj_dir_rem = obj_dir.replace(common_path,'',1)
|
||||||
|
|
||||||
|
if db_dir_rem:
|
||||||
|
# If the db_dir_rem not empty then we need to go up
|
||||||
|
# once for each word, that is, nseps + 1 (no trailing sep)
|
||||||
|
ndirs = db_dir.replace(common_path,'',1).count(os.path.sep) + 1
|
||||||
|
up_from_db = '../'*ndirs
|
||||||
|
else:
|
||||||
|
# If the db_dir_rem empty then we don't need to go up
|
||||||
|
up_from_db = ''
|
||||||
|
if obj_dir_rem[0] == os.path.sep:
|
||||||
|
obj_dir_rem = obj_dir_rem[1:]
|
||||||
|
return os.path.join(up_from_db,obj_dir_rem,obj_name)
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user