mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Changed sort to use field_metadata.search_term_to_field_key.
In the process, refactored field_metadata and LibraryDatabase2 to use the same method names for the same function (in more cases).
This commit is contained in:
parent
b5c0cc85d1
commit
8a3aa64776
@ -334,7 +334,7 @@ class ResultCache(SearchQueryParser):
|
||||
if query and query.strip():
|
||||
# get metadata key associated with the search term. Eliminates
|
||||
# dealing with plurals and other aliases
|
||||
location = self.field_metadata.search_term_to_key(location.lower().strip())
|
||||
location = self.field_metadata.search_term_to_field_key(location.lower().strip())
|
||||
if isinstance(location, list):
|
||||
if allow_recursion:
|
||||
for loc in location:
|
||||
@ -610,12 +610,9 @@ class ResultCache(SearchQueryParser):
|
||||
# Sorting functions {{{
|
||||
|
||||
def sanitize_sort_field_name(self, field):
|
||||
field = field.lower().strip()
|
||||
if field not in self.field_metadata.iterkeys():
|
||||
if field in ('author', 'tag', 'comment'):
|
||||
field += 's'
|
||||
if field == 'date': field = 'timestamp'
|
||||
elif field == 'title': field = 'sort'
|
||||
field = self.field_metadata.search_term_to_field_key(field.lower().strip())
|
||||
# translate some fields to their hidden equivalent
|
||||
if field == 'title': field = 'sort'
|
||||
elif field == 'authors': field = 'author_sort'
|
||||
return field
|
||||
|
||||
|
@ -552,10 +552,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
||||
return self.field_metadata.sortable_field_keys()
|
||||
|
||||
def searchable_fields(self):
|
||||
return self.field_metadata.searchable_field_keys()
|
||||
return self.field_metadata.searchable_fields()
|
||||
|
||||
def search_term_to_field_key(self, term):
|
||||
return self.field_metadata.search_term_to_key(term)
|
||||
return self.field_metadata.search_term_to_field_key(term)
|
||||
|
||||
def metadata_for_field(self, key):
|
||||
return self.field_metadata[key]
|
||||
|
@ -501,12 +501,12 @@ class FieldMetadata(dict):
|
||||
raise ValueError('Attempt to add duplicate search term "%s"'%t)
|
||||
self._search_term_map[t] = key
|
||||
|
||||
def search_term_to_key(self, term):
|
||||
def search_term_to_field_key(self, term):
|
||||
if term in self._search_term_map:
|
||||
return self._search_term_map[term]
|
||||
return term
|
||||
|
||||
def searchable_field_keys(self):
|
||||
def searchable_fields(self):
|
||||
return [k for k in self._tb_cats.keys()
|
||||
if self._tb_cats[k]['kind']=='field' and
|
||||
len(self._tb_cats[k]['search_terms']) > 0]
|
||||
|
Loading…
x
Reference in New Issue
Block a user