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():
|
if query and query.strip():
|
||||||
# get metadata key associated with the search term. Eliminates
|
# get metadata key associated with the search term. Eliminates
|
||||||
# dealing with plurals and other aliases
|
# 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 isinstance(location, list):
|
||||||
if allow_recursion:
|
if allow_recursion:
|
||||||
for loc in location:
|
for loc in location:
|
||||||
@ -610,12 +610,9 @@ class ResultCache(SearchQueryParser):
|
|||||||
# Sorting functions {{{
|
# Sorting functions {{{
|
||||||
|
|
||||||
def sanitize_sort_field_name(self, field):
|
def sanitize_sort_field_name(self, field):
|
||||||
field = field.lower().strip()
|
field = self.field_metadata.search_term_to_field_key(field.lower().strip())
|
||||||
if field not in self.field_metadata.iterkeys():
|
# translate some fields to their hidden equivalent
|
||||||
if field in ('author', 'tag', 'comment'):
|
if field == 'title': field = 'sort'
|
||||||
field += 's'
|
|
||||||
if field == 'date': field = 'timestamp'
|
|
||||||
elif field == 'title': field = 'sort'
|
|
||||||
elif field == 'authors': field = 'author_sort'
|
elif field == 'authors': field = 'author_sort'
|
||||||
return field
|
return field
|
||||||
|
|
||||||
|
@ -552,10 +552,10 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
return self.field_metadata.sortable_field_keys()
|
return self.field_metadata.sortable_field_keys()
|
||||||
|
|
||||||
def searchable_fields(self):
|
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):
|
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):
|
def metadata_for_field(self, key):
|
||||||
return self.field_metadata[key]
|
return self.field_metadata[key]
|
||||||
|
@ -501,12 +501,12 @@ class FieldMetadata(dict):
|
|||||||
raise ValueError('Attempt to add duplicate search term "%s"'%t)
|
raise ValueError('Attempt to add duplicate search term "%s"'%t)
|
||||||
self._search_term_map[t] = key
|
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:
|
if term in self._search_term_map:
|
||||||
return self._search_term_map[term]
|
return self._search_term_map[term]
|
||||||
return term
|
return term
|
||||||
|
|
||||||
def searchable_field_keys(self):
|
def searchable_fields(self):
|
||||||
return [k for k in self._tb_cats.keys()
|
return [k for k in self._tb_cats.keys()
|
||||||
if self._tb_cats[k]['kind']=='field' and
|
if self._tb_cats[k]['kind']=='field' and
|
||||||
len(self._tb_cats[k]['search_terms']) > 0]
|
len(self._tb_cats[k]['search_terms']) > 0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user