Fix tag_list_editor.py to use ids when deleting tags

This commit is contained in:
Charles Haley 2010-06-03 08:54:36 +01:00
parent 477d947899
commit 40d054d465
2 changed files with 15 additions and 12 deletions

View File

@ -48,7 +48,7 @@ class TagListEditor(QDialog, Ui_TagListEditor):
'The tag %s is already used.'%(item.text())).exec_() 'The tag %s is already used.'%(item.text())).exec_()
item.setText(self.item_before_editing.text()) item.setText(self.item_before_editing.text())
return return
id,ign = self.item_before_editing.data(Qt.UserRole).toInt() (id,_) = self.item_before_editing.data(Qt.UserRole).toInt()
self.to_rename[item.text()] = id self.to_rename[item.text()] = id
def rename_tag(self): def rename_tag(self):
@ -82,13 +82,14 @@ class TagListEditor(QDialog, Ui_TagListEditor):
deletes += confirms deletes += confirms
for item in deletes: for item in deletes:
self.to_delete.append(item) (id,_) = item.data(Qt.UserRole).toInt()
self.to_delete.append(id)
self.available_tags.takeItem(self.available_tags.row(item)) self.available_tags.takeItem(self.available_tags.row(item))
def accept(self): def accept(self):
for text in self.to_rename: for text in self.to_rename:
self.db.rename_tag(self.to_rename[text], unicode(text)) self.db.rename_tag(id=self.to_rename[text], new_name=unicode(text))
for item in self.to_delete: for item in self.to_delete:
self.db.delete_tag(unicode(item.text())) self.db.delete_tag_using_id(item)
QDialog.accept(self) QDialog.accept(self)

View File

@ -987,16 +987,13 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
# Convenience method for tags_list_editor # Convenience method for tags_list_editor
def get_tags_with_ids(self): def get_tags_with_ids(self):
result = self.conn.get('SELECT * FROM tags') result = self.conn.get('SELECT id,name FROM tags')
if not result: if not result:
return {} return []
r = [] return result
for k,v in result:
r.append((k,v))
return r
def rename_tag(self, id, new): def rename_tag(self, id, new_name):
self.conn.execute('UPDATE tags SET name=? WHERE id=?', (new, id)) self.conn.execute('UPDATE tags SET name=? WHERE id=?', (new_name, id))
self.conn.commit() self.conn.commit()
def get_tags(self, id): def get_tags(self, id):
@ -1083,6 +1080,11 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
self.conn.execute('DELETE FROM tags WHERE id=?', (id,)) self.conn.execute('DELETE FROM tags WHERE id=?', (id,))
self.conn.commit() self.conn.commit()
def delete_tag_using_id(self, id):
if id:
self.conn.execute('DELETE FROM books_tags_link WHERE tag=?', (id,))
self.conn.execute('DELETE FROM tags WHERE id=?', (id,))
self.conn.commit()
def set_series(self, id, series, notify=True): def set_series(self, id, series, notify=True):
self.conn.execute('DELETE FROM books_series_link WHERE book=?',(id,)) self.conn.execute('DELETE FROM books_series_link WHERE book=?',(id,))