Update
svn: r7207
This commit is contained in:
parent
8f3f140127
commit
8b85dbab82
@ -156,6 +156,7 @@ class MediaMan(Tool.Tool):
|
|||||||
batches_to_use = [
|
batches_to_use = [
|
||||||
PathChange,
|
PathChange,
|
||||||
Convert2Abs,
|
Convert2Abs,
|
||||||
|
Convert2Rel,
|
||||||
]
|
]
|
||||||
|
|
||||||
for batch_class in batches_to_use:
|
for batch_class in batches_to_use:
|
||||||
@ -281,9 +282,8 @@ class MediaMan(Tool.Tool):
|
|||||||
if success:
|
if success:
|
||||||
conclusion_title = _('Operation succesfully finished.')
|
conclusion_title = _('Operation succesfully finished.')
|
||||||
conclusion_text = _(
|
conclusion_text = _(
|
||||||
'The operation you requested has been '
|
'The operation you requested has finished successfully. '
|
||||||
'successfully finished. You may press OK button '
|
'You may press OK button now to continue.')
|
||||||
'now to continue.')
|
|
||||||
else:
|
else:
|
||||||
conclusion_title = _('Operation failed'),
|
conclusion_title = _('Operation failed'),
|
||||||
conclusion_text = _(
|
conclusion_text = _(
|
||||||
@ -323,7 +323,10 @@ class BatchOp(UpdateCallback):
|
|||||||
This method should return either None (if the batch op requires
|
This method should return either None (if the batch op requires
|
||||||
no confirmation) or a string with the confirmation text.
|
no confirmation) or a string with the confirmation text.
|
||||||
"""
|
"""
|
||||||
return "This confirmation text needs to be written"
|
text = _(
|
||||||
|
'The following action is to be performed:\n\n'
|
||||||
|
'Operation:\t%s') % self.title.replace('_','')
|
||||||
|
return text
|
||||||
|
|
||||||
def build_path_list(self):
|
def build_path_list(self):
|
||||||
"""
|
"""
|
||||||
@ -394,7 +397,7 @@ class BatchOp(UpdateCallback):
|
|||||||
# Simple op to replace substrings in the paths
|
# Simple op to replace substrings in the paths
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
class PathChange(BatchOp):
|
class PathChange(BatchOp):
|
||||||
title = _('_Replace substrings in the path')
|
title = _('Replace _substrings in the path')
|
||||||
description = _('This tool allows replacing specified substring in the '
|
description = _('This tool allows replacing specified substring in the '
|
||||||
'path of media objects with another substring. '
|
'path of media objects with another substring. '
|
||||||
'This can be useful when you move your media files '
|
'This can be useful when you move your media files '
|
||||||
@ -482,12 +485,6 @@ class Convert2Abs(BatchOp):
|
|||||||
'to the absolute ones. An absolute path allows to '
|
'to the absolute ones. An absolute path allows to '
|
||||||
'fix the file location while moving the database.')
|
'fix the file location while moving the database.')
|
||||||
|
|
||||||
def build_confirm_text(self):
|
|
||||||
text = _(
|
|
||||||
'The following action is to be performed:\n\n'
|
|
||||||
'Operation:\t%s') % self.title.replace('_','')
|
|
||||||
return text
|
|
||||||
|
|
||||||
def _prepare(self):
|
def _prepare(self):
|
||||||
cursor = self.db.get_media_cursor()
|
cursor = self.db.get_media_cursor()
|
||||||
self.set_total(self.db.get_number_of_media_objects())
|
self.set_total(self.db.get_number_of_media_objects())
|
||||||
@ -516,6 +513,49 @@ class Convert2Abs(BatchOp):
|
|||||||
self.update()
|
self.update()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
#An op to convert absolute paths to relative
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
class Convert2Rel(BatchOp):
|
||||||
|
title = _('Convert paths from absolute to _relative')
|
||||||
|
description = _('This tool allows converting absolute media paths '
|
||||||
|
'to the relative ones. A relative path allows to '
|
||||||
|
'tie the file location to that of the database.')
|
||||||
|
|
||||||
|
def _prepare(self):
|
||||||
|
cursor = self.db.get_media_cursor()
|
||||||
|
self.set_total(self.db.get_number_of_media_objects())
|
||||||
|
item = cursor.first()
|
||||||
|
while item:
|
||||||
|
(handle,data) = item
|
||||||
|
obj = MediaObject()
|
||||||
|
obj.unserialize(data)
|
||||||
|
if os.path.isabs(obj.path):
|
||||||
|
self.handle_list.append(handle)
|
||||||
|
self.path_list.append(obj.path)
|
||||||
|
item = cursor.next()
|
||||||
|
self.update()
|
||||||
|
cursor.close()
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
def _run(self):
|
||||||
|
if not self.prepared:
|
||||||
|
self.prepare()
|
||||||
|
self.set_total(len(self.handle_list))
|
||||||
|
dbpath = self.db.full_name
|
||||||
|
for handle in self.handle_list:
|
||||||
|
obj = self.db.get_object_from_handle(handle)
|
||||||
|
new_path = self.get_rel_path(dbpath,obj.path)
|
||||||
|
obj.set_path(new_path)
|
||||||
|
self.db.commit_media_object(obj,self.trans)
|
||||||
|
self.update()
|
||||||
|
return True
|
||||||
|
|
||||||
|
def get_rel_path(self,dbpath,objpath):
|
||||||
|
common_path = os.path.commonprefix([dbpath,objpath])
|
||||||
|
ndirs = dbpath.replace(common_path,'',1).count(os.path.sep)
|
||||||
|
return ('../'*ndirs + objpath.replace(common_path,'',1))
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user