From cc19a77298eff23dc789bad3f340418ab90f59d6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 15 Sep 2022 08:44:10 +0530 Subject: [PATCH] Fix error when using tag browser if a user category contains a reference to a deleted custom column --- src/calibre/db/cache.py | 4 ++-- src/calibre/gui2/tag_browser/model.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index a0890994c8..87ab8a6102 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -809,11 +809,11 @@ class Cache: @read_api def get_item_id(self, field, item_name): - ' Return the item id for item_name (case-insensitive) ' + ' Return the item id for item_name (case-insensitive) or None if not found ' try: rmap = {icu_lower(v) if isinstance(v, str) else v:k for k, v in iteritems(self.fields[field].table.id_map)} except KeyError: - rmap = {} + return None return rmap.get(icu_lower(item_name) if isinstance(item_name, str) else item_name, None) @read_api diff --git a/src/calibre/gui2/tag_browser/model.py b/src/calibre/gui2/tag_browser/model.py index 1114436095..b008934ec2 100644 --- a/src/calibre/gui2/tag_browser/model.py +++ b/src/calibre/gui2/tag_browser/model.py @@ -1469,9 +1469,10 @@ class TagsModel(QAbstractItemModel): # {{{ datatype = cache.field_metadata.get(key, {}).get('datatype', '*****') if datatype != 'composite': id_ = cache.get_item_id(key, val) - v = cache.books_for_field(key, id_) - if v: - new_cat.append([val, key, 0]) + if id_ is not None: + v = cache.books_for_field(key, id_) + if v: + new_cat.append([val, key, 0]) if new_cat: all_cats[cat] = new_cat self.db.new_api.set_pref('user_categories', all_cats)