diff --git a/src/calibre/gui2/library/models.py b/src/calibre/gui2/library/models.py index 45fcd0ab36..ad3fc5d0b2 100644 --- a/src/calibre/gui2/library/models.py +++ b/src/calibre/gui2/library/models.py @@ -1104,7 +1104,8 @@ class OnDeviceSearch(SearchQueryParser): # {{{ 'format', 'formats', 'title', - 'inlibrary' + 'inlibrary', + 'tags' ] def __init__(self, model): @@ -1135,14 +1136,15 @@ class OnDeviceSearch(SearchQueryParser): # {{{ if location not in self.USABLE_LOCATIONS: return set([]) matches = set([]) - all_locs = set(self.USABLE_LOCATIONS) - set(['all']) + all_locs = set(self.USABLE_LOCATIONS) - set(['all', 'tags']) locations = all_locs if location == 'all' else [location] q = { 'title' : lambda x : getattr(x, 'title').lower(), 'author': lambda x: ' & '.join(getattr(x, 'authors')).lower(), 'collections':lambda x: ','.join(getattr(x, 'device_collections')).lower(), 'format':lambda x: os.path.splitext(x.path)[1].lower(), - 'inlibrary':lambda x : getattr(x, 'in_library') + 'inlibrary':lambda x : getattr(x, 'in_library'), + 'tags':lambda x : getattr(x, 'tags', []) } for x in ('author', 'format'): q[x+'s'] = q[x] @@ -1169,10 +1171,11 @@ class OnDeviceSearch(SearchQueryParser): # {{{ else: m = matchkind - if locvalue == 'collections': - vals = accessor(row).split(',') - else: - vals = [accessor(row)] + vals = accessor(row) + if vals is None: + vals = '' + if isinstance(vals, basestring): + vals = vals.split(',') if locvalue == 'collections' else [vals] if _match(query, vals, m, use_primary_find_in_search=upf): matches.add(index) break