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:
Charles Haley 2010-09-21 15:53:54 +01:00
parent b5c0cc85d1
commit 8a3aa64776
3 changed files with 8 additions and 11 deletions

View File

@ -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

View File

@ -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]

View File

@ -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]