From 427afe73daaaf6568ce027f03d7cc975cc0da116 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 8 Feb 2010 17:26:04 -0700 Subject: [PATCH] Fix #4809 (Series,Tags Trailing space (mis-)allowed) --- src/calibre/gui2/dialogs/metadata_single.py | 6 ++++-- src/calibre/library/database2.py | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/dialogs/metadata_single.py b/src/calibre/gui2/dialogs/metadata_single.py index 8fab6a922a..0d735b82e4 100644 --- a/src/calibre/gui2/dialogs/metadata_single.py +++ b/src/calibre/gui2/dialogs/metadata_single.py @@ -645,8 +645,10 @@ class MetadataSingleDialog(ResizableDialog, Ui_MetadataSingleDialog): re.sub(r'[^0-9a-zA-Z]', '', unicode(self.isbn.text())), notify=False) self.db.set_rating(self.id, 2*self.rating.value(), notify=False) self.db.set_publisher(self.id, qstring_to_unicode(self.publisher.currentText()), notify=False) - self.db.set_tags(self.id, qstring_to_unicode(self.tags.text()).split(','), notify=False) - self.db.set_series(self.id, qstring_to_unicode(self.series.currentText()), notify=False) + self.db.set_tags(self.id, [x.strip() for x in + unicode(self.tags.text()).split(',')], notify=False) + self.db.set_series(self.id, + unicode(self.series.currentText()).strip(), notify=False) self.db.set_series_index(self.id, self.series_index.value(), notify=False) self.db.set_comment(self.id, qstring_to_unicode(self.comments.toPlainText()), notify=False) d = self.pubdate.date() diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 1fdb4ef9a9..ac412aacfb 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -1120,7 +1120,8 @@ class LibraryDatabase2(LibraryDatabase): elif column == 'rating': self.set_rating(id, val, notify=False) elif column == 'tags': - self.set_tags(id, val.split(','), append=False, notify=False) + self.set_tags(id, [x.strip() for x in val.split(',') if x.strip()], + append=False, notify=False) self.data.refresh_ids(self, [id]) self.set_path(id, True) self.notify('metadata', [id]) @@ -1274,6 +1275,10 @@ class LibraryDatabase2(LibraryDatabase): self.conn.execute('DELETE FROM books_tags_link WHERE book=?', (id,)) self.conn.execute('DELETE FROM tags WHERE (SELECT COUNT(id) FROM books_tags_link WHERE tag=tags.id) < 1') otags = self.get_tags(id) + tags = [x.strip() for x in tags if x.strip()] + tags = [x.decode(preferred_encoding, 'replace') if not isinstance(x, + unicode) else x for x in tags] + tags = [u' '.join(x.split()) for x in tags] for tag in (set(tags)-otags): tag = tag.strip() if not tag: @@ -1344,6 +1349,8 @@ class LibraryDatabase2(LibraryDatabase): if series: if not isinstance(series, unicode): series = series.decode(preferred_encoding, 'replace') + series = series.strip() + series = u' '.join(series.split()) s = self.conn.get('SELECT id from series WHERE name=?', (series,), all=False) if s: aid = s