Implement add_books()

This commit is contained in:
Kovid Goyal 2013-07-06 11:24:19 +05:30
parent 7c9ae4ebc9
commit 20920b37b2
2 changed files with 25 additions and 2 deletions

View File

@ -1117,10 +1117,17 @@ class Cache(object):
return book_id
@write_api
def add_books(self, books, add_duplicates=True):
def add_books(self, books, add_duplicates=True, apply_import_tags=True, preserve_uuid=False, dbapi=None):
duplicates, ids = [], []
for mi, format_map in books:
pass
book_id = self._create_book_entry(mi, add_duplicates=add_duplicates, apply_import_tags=apply_import_tags, preserve_uuid=preserve_uuid)
if book_id is None:
duplicates.append((mi, format_map))
else:
ids.append(book_id)
for fmt, stream_or_path in format_map.iteritems():
self._add_format(book_id, fmt, stream_or_path, dbapi=dbapi)
return ids, duplicates
# }}}

View File

@ -188,3 +188,19 @@ class AddRemoveTest(BaseTest):
self.assertEqual(mi.uuid, cache.field_for('uuid', book_id))
# }}}
def test_add_books(self): # {{{
'Test the adding of new books'
from calibre.ebooks.metadata.book.base import Metadata
cache = self.init_cache()
mi = Metadata('Created One', authors=('Creator One', 'Creator Two'))
FMT1, FMT2 = b'format1', b'format2'
format_map = {'FMT1':BytesIO(FMT1), 'FMT2':BytesIO(FMT2)}
ids, duplicates = cache.add_books([(mi, format_map)])
self.assertTrue(len(ids) == 1)
self.assertFalse(duplicates)
book_id = ids[0]
self.assertEqual(set(cache.formats(book_id)), {'FMT1', 'FMT2'})
self.assertEqual(cache.format(book_id, 'FMT1'), FMT1)
self.assertEqual(cache.format(book_id, 'FMT2'), FMT2)
# }}}