From 4dc946d79b321f432868fcde1e6e5a1ac96dac5e Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 12 Jan 2009 12:32:32 -0800 Subject: [PATCH] Fix #1603 (traceback on adding multiple books from directories, each directory single book with multiple versions) --- src/calibre/library/database.py | 3 --- src/calibre/library/database2.py | 10 +++++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/calibre/library/database.py b/src/calibre/library/database.py index f14a1174fc..ecf272618f 100644 --- a/src/calibre/library/database.py +++ b/src/calibre/library/database.py @@ -1551,9 +1551,6 @@ ALTER TABLE books ADD COLUMN isbn TEXT DEFAULT "" COLLATE NOCASE; - def has_book(self, mi): - return bool(self.conn.get('SELECT id FROM books where title=?', (mi.title,), all=False)) - def has_id(self, id): return self.conn.get('SELECT id FROM books where id=?', (id,), all=False) is not None diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index e39736baf6..da41dba57f 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -561,7 +561,15 @@ class LibraryDatabase2(LibraryDatabase): img.loadFromData(f.read()) return img return f if as_file else f.read() - + + def has_book(self, mi): + title = mi.title + if title: + if not isinstance(title, unicode): + title = title.decode(preferred_encoding, 'replace') + return bool(self.conn.get('SELECT id FROM books where title=?', (title,), all=False)) + return False + def has_cover(self, index, index_is_id=False): id = index if index_is_id else self.id(index) path = os.path.join(self.library_path, self.path(id, index_is_id=True), 'cover.jpg')