Beispiel #1
0
    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
Beispiel #2
0
    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]