From 998a79075ce9c68f5c0e7860af663dcc5ed2bde2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 12 Jul 2013 13:39:14 +0530 Subject: [PATCH] all_formats() --- src/calibre/db/cache.py | 3 +++ src/calibre/db/legacy.py | 1 + src/calibre/db/tests/legacy.py | 1 + 3 files changed, 5 insertions(+) diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index a322c9b6d7..ce921537f2 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -363,6 +363,9 @@ class Cache(object): @read_api def all_field_names(self, field): ''' Frozen set of all fields names (should only be used for many-one and many-many fields) ''' + if field == 'formats': + return frozenset(self.fields[field].table.col_book_map) + try: return frozenset(self.fields[field].table.id_map.itervalues()) except AttributeError: diff --git a/src/calibre/db/legacy.py b/src/calibre/db/legacy.py index 4c825247e9..398d1b1a86 100644 --- a/src/calibre/db/legacy.py +++ b/src/calibre/db/legacy.py @@ -68,6 +68,7 @@ class LibraryDatabase(object): for field in ('authors', 'tags', 'publisher', 'series'): name = field[:-1] if field in {'authors', 'tags'} else field setattr(self, 'all_%s_names' % name, partial(self.new_api.all_field_names, field)) + self.all_formats = partial(self.new_api.all_field_names, 'formats') for func, field in {'all_authors':'authors', 'all_titles':'title', 'all_tags2':'tags', 'all_series':'series', 'all_publishers':'publisher'}.iteritems(): setattr(self, func, partial(self.field_id_map, field)) diff --git a/src/calibre/db/tests/legacy.py b/src/calibre/db/tests/legacy.py index 6413dc0d8f..b816341b5a 100644 --- a/src/calibre/db/tests/legacy.py +++ b/src/calibre/db/tests/legacy.py @@ -158,6 +158,7 @@ class LegacyTest(BaseTest): 'custom_field_keys':[(True,), (False,)], 'get_usage_count_by_id':[('authors',), ('tags',), ('series',), ('publisher',), ('#tags',), ('languages',)], 'get_field':[(1, 'title'), (2, 'tags'), (0, 'rating'), (1, 'authors'), (2, 'series'), (1, '#tags')], + 'all_formats':[()], }.iteritems(): for a in args: fmt = lambda x: x