Example #1
0
 def __call__(self, query, field_iter, bools_are_tristate):
     matches = set()
     if query not in self.local_bool_values:
         raise ParseException(
             _('Invalid boolean query "{0}"').format(query))
     for val, book_ids in field_iter():
         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, 'unchecked',
                         '_unchecked', 'no', '_no', 'false'
                 }:
                     matches |= book_ids
             else:  # item is explicitly set to 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, '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, 'unchecked',
                         '_unchecked', 'no', '_no', 'true'
                 }:
                     matches |= book_ids
             else:  # item is not None and true
                 if query in {
                         self.local_yes, self.local_checked, 'checked',
                         '_checked', 'yes', '_yes', 'true'
                 }:
                     matches |= book_ids
     return matches
Example #2
0
 def __call__(self, query, field_iter, bools_are_tristate):
     matches = set()
     if query not in self.local_bool_values:
         raise ParseException(_('Invalid boolean query "{0}"').format(query))
     for val, book_ids in field_iter():
         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'}:
                     matches |= book_ids
             else:  # item is explicitly set to true
                 if query in {self.local_yes, self.local_checked, 'yes', '_yes', 'true'}:
                     matches |= book_ids
         else:
             if val is None:
                 if query in {self.local_empty, self.local_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'}:
                     matches |= book_ids
             else:  # item is not None and true
                 if query in {self.local_yes, self.local_checked, 'yes', '_yes', 'true'}:
                     matches |= book_ids
     return matches
Example #3
0
 def bool_sort_key(self, val):
     return self._bool_sort_key(force_to_bool(val))
Example #4
0
 def bool_sort_key(self, val):
     return self._bool_sort_key(force_to_bool(val))