Fix searches on Yes/No columns using the terms ('blank', 'checked', 'unchecked') not working on non-English calibre installs

This commit is contained in:
Kovid Goyal 2014-07-14 20:28:13 +05:30
parent 689d9f6e60
commit c2576d2d29

View File

@ -303,9 +303,9 @@ class BooleanSearch(object): # {{{
self.local_empty = icu_lower(_('empty'))
self.local_blank = icu_lower(_('blank'))
self.local_bool_values = {
self.local_no, self.local_unchecked, '_no', 'false', 'no',
self.local_yes, self.local_checked, '_yes', 'true', 'yes',
self.local_empty, self.local_blank, '_empty', 'empty'}
self.local_no, self.local_unchecked, '_no', 'false', 'no', 'unchecked', '_unchecked',
self.local_yes, self.local_checked, 'checked', '_checked', '_yes', 'true', 'yes',
self.local_empty, self.local_blank, 'blank', '_blank', '_empty', 'empty'}
def __call__(self, query, field_iter, bools_are_tristate):
matches = set()
@ -315,20 +315,20 @@ class BooleanSearch(object): # {{{
val = force_to_bool(val)
if not bools_are_tristate:
if val is None or not val: # item is None or set to false
if query in {self.local_no, self.local_unchecked, 'no', '_no', 'false'}:
if query in {self.local_no, self.local_unchecked, 'unchecked', '_unchecked', 'no', '_no', 'false'}:
matches |= book_ids
else: # item is explicitly set to true
if query in {self.local_yes, self.local_checked, 'yes', '_yes', 'true'}:
if query in {self.local_yes, self.local_checked, 'checked', '_checked', 'yes', '_yes', 'true'}:
matches |= book_ids
else:
if val is None:
if query in {self.local_empty, self.local_blank, 'empty', '_empty', 'false'}:
if query in {self.local_empty, self.local_blank, 'blank', '_blank', 'empty', '_empty', 'false'}:
matches |= book_ids
elif not val: # is not None and false
if query in {self.local_no, self.local_unchecked, 'no', '_no', 'true'}:
if query in {self.local_no, self.local_unchecked, 'unchecked', '_unchecked', 'no', '_no', 'true'}:
matches |= book_ids
else: # item is not None and true
if query in {self.local_yes, self.local_checked, 'yes', '_yes', 'true'}:
if query in {self.local_yes, self.local_checked, 'checked', '_checked', 'yes', '_yes', 'true'}:
matches |= book_ids
return matches