From 91cd75909e1d1eae0f2c324267dba2e6afd36d58 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Thu, 24 Jun 2010 21:26:04 +0100 Subject: [PATCH] Fix renaming bug where multiple items were renamed to the same thing --- src/calibre/gui2/actions.py | 5 +++-- src/calibre/gui2/dialogs/tag_list_editor.py | 5 ++++- src/calibre/gui2/tag_view.py | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/calibre/gui2/actions.py b/src/calibre/gui2/actions.py index f3f6ee604c..43a657ae67 100644 --- a/src/calibre/gui2/actions.py +++ b/src/calibre/gui2/actions.py @@ -839,10 +839,11 @@ class EditMetadataAction(object): # {{{ d = TagListEditor(self, tag_to_match=None, data=result, compare=compare) d.exec_() if d.result() == d.Accepted: - to_rename = d.to_rename # dict of new text to old id + to_rename = d.to_rename # dict of new text to old ids to_delete = d.to_delete # list of ids for text in to_rename: - model.rename_collection(old_id=to_rename[text], new_name=unicode(text)) + for old_id in to_rename[text]: + model.rename_collection(old_id, new_name=unicode(text)) for item in to_delete: model.delete_collection_using_id(item) self.upload_collections(model.db, view=view, oncard=oncard) diff --git a/src/calibre/gui2/dialogs/tag_list_editor.py b/src/calibre/gui2/dialogs/tag_list_editor.py index 6d91ed2ee2..9eb368e5e4 100644 --- a/src/calibre/gui2/dialogs/tag_list_editor.py +++ b/src/calibre/gui2/dialogs/tag_list_editor.py @@ -73,7 +73,10 @@ class TagListEditor(QDialog, Ui_TagListEditor): return if item.text() != self.item_before_editing.text(): (id,ign) = self.item_before_editing.data(Qt.UserRole).toInt() - self.to_rename[item.text()] = id + if item.text() not in self.to_rename: + self.to_rename[item.text()] = [id] + else: + self.to_rename[item.text()].append(id) def rename_tag(self): item = self.available_tags.currentItem() diff --git a/src/calibre/gui2/tag_view.py b/src/calibre/gui2/tag_view.py index 140b1e1e52..34b9bd1426 100644 --- a/src/calibre/gui2/tag_view.py +++ b/src/calibre/gui2/tag_view.py @@ -720,7 +720,9 @@ class TagBrowserMixin(object): # {{{ delete_func = partial(db.delete_custom_item_using_id, label=cc_label) if rename_func: for text in to_rename: - rename_func(old_id=to_rename[text], new_name=unicode(text)) + for old_id in to_rename[text]: + print 'rename', old_id, text + rename_func(old_id, new_name=unicode(text)) for item in to_delete: delete_func(item)