def to_sql_values(self): if self.show_all: return {} values = { get_INFilter_element_bindparam(self.filter['slug'], i): val.value for i, val in enumerate(self._get_value_without_nulls()) } if self.is_null: values[get_null_empty_value_bindparam(self.filter['slug'])] = '' if self._ancestor_filter: values.update(self._ancestor_filter.sql_value()) return values
def to_sql_filter(self): if self.show_all: return None sql_filters = [] non_null_values = self._get_value_without_nulls() if non_null_values: in_filter = INFilter( self.filter['field'], get_INFilter_bindparams(self.filter['slug'], non_null_values) ) if self._ancestor_filter: sql_filters.append(ANDFilter([ self._ancestor_filter.sql_filter(), in_filter, ])) else: sql_filters.append(in_filter) elif self._ancestor_filter: sql_filters.append(self._ancestor_filter.sql_filter()) if self.is_null: # combine null and blank fields into a single filter sql_filters.append( ORFilter([ ISNULLFilter(self.filter['field']), EQFilter(self.filter['field'], get_null_empty_value_bindparam(self.filter['slug'])), ]) ) if len(sql_filters) > 1: return ORFilter( sql_filters ) else: return sql_filters[0]