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
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
def bool_sort_key(self, val): return self._bool_sort_key(force_to_bool(val))