def test_default_callable(self): def def_val(): return 'bar' tf = TextFilter(Person.firstname, default_op='contains', default_value1=def_val) tf.set(None, None) assert tf.is_active query = tf.apply(db.session.query(Person.id)) self.assert_in_query(query, "WHERE persons.firstname LIKE '%bar%'")
class SimpleGrid(Grid): on_page = 1 per_page = 1 Column('ID', 'id') Column('Name', 'name', filter=TextFilter(Person.firstname)) Column('Status', 'status') Column('Emails', 'emails', can_sort=False)
class DefaultOpGrid(Grid): session_on = True FirstNameColumn(_('First Name'), Person.firstname, TextFilter(Person.firstname, default_op=ops.eq))
def test_not_empty(self): tf = TextFilter(Person.firstname) tf.set('!empty', 'foo') query = tf.apply(db.session.query(Person.id)) self.assert_in_query(query, "WHERE persons.firstname IS NOT NULL AND persons.firstname != ''")
def test_not_eq(self): tf = TextFilter(Person.firstname) tf.set('!eq', 'foo') query = tf.apply(db.session.query(Person.id)) self.assert_in_query(query, "WHERE persons.firstname != 'foo'")
def test_default_no_value(self): tf = TextFilter(Person.firstname, default_op='contains') tf.set(None, None) assert not tf.is_active
def test_default(self): tf = TextFilter(Person.firstname, default_op='contains', default_value1='foo') tf.set(None, None) assert tf.is_active query = tf.apply(db.session.query(Person.id)) self.assert_in_query(query, "WHERE persons.firstname LIKE '%foo%'")
def test_doesnt_contain(self): tf = TextFilter(Person.firstname) tf.set('!contains', 'foo') query = tf.apply(db.session.query(Person.id)) self.assert_in_query(query, "WHERE persons.firstname NOT LIKE '%foo%'")
def get_filter(self): class MockDialect: name = 'postgresql' return TextFilter(Person.firstname).new_instance(dialect=MockDialect())
class CTG(Grid): Column('First Name', Person.firstname, TextFilter(Person.lastname))