Update
svn: r7207
This commit is contained in:
		| @@ -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)) | ||||||
|  |  | ||||||
| #------------------------------------------------------------------------ | #------------------------------------------------------------------------ | ||||||
| # | # | ||||||
| #  | #  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user