diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py index 8397827fbb..14d22d5017 100644 --- a/src/calibre/customize/ui.py +++ b/src/calibre/customize/ui.py @@ -151,13 +151,13 @@ def reread_filetype_plugins(): def _run_filetype_plugins(path_to_file, ft=None, occasion='preprocess'): - occasion = {'import':_on_import, 'preprocess':_on_preprocess, + occasion_plugins = {'import':_on_import, 'preprocess':_on_preprocess, 'postprocess':_on_postprocess}[occasion] customization = config['plugin_customization'] if ft is None: ft = os.path.splitext(path_to_file)[-1].lower().replace('.', '') nfp = path_to_file - for plugin in occasion.get(ft, []): + for plugin in occasion_plugins.get(ft, []): if is_disabled(plugin): continue plugin.site_customization = customization.get(plugin.name, '') diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py index 7e4a879654..2983ac5e58 100644 --- a/src/calibre/library/database2.py +++ b/src/calibre/library/database2.py @@ -782,6 +782,15 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns): icon=icon, tooltip=tooltip) for r in data if item_not_zero_func(r)] + # Needed for legacy databases that have multiple ratings that + # map to n stars + for r in categories['rating']: + for x in categories['rating']: + if r.name == x.name and r.id != x.id: + r.count = r.count + x.count + categories['rating'].remove(x) + break + # We delayed computing the standard formats category because it does not # use a view, but is computed dynamically categories['formats'] = []