From 8fbdd7bc9a2b0fc8049564570242c9368875c788 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 22 Jan 2019 13:38:33 +0530 Subject: [PATCH] Add a flag to cdb/set-fields to avoid needing to pass all book ids for dirtied updates --- src/calibre/srv/cdb.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/calibre/srv/cdb.py b/src/calibre/srv/cdb.py index 9f04e77392..81d86d46d1 100644 --- a/src/calibre/srv/cdb.py +++ b/src/calibre/srv/cdb.py @@ -144,6 +144,7 @@ def cdb_set_fields(ctx, rd, book_id, library_id): raise HTTPBadRequest('Invalid encoded data') try: changes, loaded_book_ids = data['changes'], frozenset(map(int, data.get('loaded_book_ids', ()))) + all_dirtied = bool(data.get('all_dirtied')) if not isinstance(changes, dict): raise TypeError('changes must be a dict') except Exception: @@ -168,4 +169,6 @@ def cdb_set_fields(ctx, rd, book_id, library_id): for field, value in changes.iteritems(): dirtied |= db.set_field(field, {book_id: value}) ctx.notify_changes(db.backend.library_path, metadata(dirtied)) - return {bid: book_as_json(db, book_id) for bid in (dirtied & loaded_book_ids) | {book_id}} + all_ids = dirtied if all_dirtied else (dirtied & loaded_book_ids) + all_ids |= {book_id} + return {bid: book_as_json(db, book_id) for bid in all_ids}