mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Implement add_books()
This commit is contained in:
parent
7c9ae4ebc9
commit
20920b37b2
@ -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
|
||||
|
||||
# }}}
|
||||
|
||||
|
@ -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)
|
||||
# }}}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user