def test_full_run(self): url = urlsplit( '/users?filter[param][name][like][no_brand_name]=doe' '&filter[param][first_name]=doe%&filter[binding]=' '(!no_brand_name%26first_name)&filter[order]=name' '&filter[order]=desc(first_name)' ) params = parse_qs(url.query) valid_filters = ['eq', 'like'] default_filter = 'eq' parser = build_parser( valid_filters=valid_filters, default_filter=default_filter, ) query = parser(params) self.assertIsInstance( query.param_order, And, ) self.assertEqual( query.orders[0].name, 'name', ) self.assertEqual( query.orders[1].name, 'first_name' )
def parser(self): return build_parser( self.filters, self.default_filter )
def evaluate_params(self, params): parser = build_parser(self._filter_names, self._default_filter) return self.evaluate(parser(params))