def __init__( self, request, separate_replies=False, separate_wildcard_uri_keys=True, _replies_limit=200, ): self.es = request.es self.separate_replies = separate_replies self._replies_limit = _replies_limit # Order matters! The KeyValueMatcher must be run last, # after all other modifiers have popped off the params. self._modifiers = [ query.Sorter(), query.Limiter(), query.DeletedFilter(), query.AuthFilter(request), query.GroupFilter(), query.GroupAuthFilter(request), query.UserFilter(), query.HiddenFilter(request), query.AnyMatcher(), query.TagsMatcher(), query.UriCombinedWildcardFilter( request, separate_keys=separate_wildcard_uri_keys ), query.KeyValueMatcher(), ] self._aggregations = []
def test_with_both_tag_and_tags(self): """If both 'tag' and 'tags' params are used they should all become tags.""" params = {'tag': 'foo', 'tags': 'bar'} result = query.TagsMatcher()(params) assert list(result.keys()) == ['bool'] assert list(result['bool'].keys()) == ['must'] assert len(result['bool']['must']) == 2 assert { 'match': { 'tags': { 'query': 'foo', 'operator': 'and' } } } in result['bool']['must'] assert { 'match': { 'tags': { 'query': 'bar', 'operator': 'and' } } } in result['bool']['must']
def test_aliases_tag_to_tags(self): """'tag' params should be transformed into 'tags' queries. 'tag' is aliased to 'tags' because users often type tag instead of tags. """ params = multidict.MultiDict() params.add('tag', 'foo') params.add('tag', 'bar') result = query.TagsMatcher()(params) assert list(result.keys()) == ['bool'] assert list(result['bool'].keys()) == ['must'] assert len(result['bool']['must']) == 2 assert { 'match': { 'tags': { 'query': 'foo', 'operator': 'and' } } } in result['bool']['must'] assert { 'match': { 'tags': { 'query': 'bar', 'operator': 'and' } } } in result['bool']['must']
def __init__(self, request, separate_replies=False, stats=None, _replies_limit=200): self.es = request.es self.separate_replies = separate_replies self.stats = stats self._replies_limit = _replies_limit # Order matters! The KeyValueMatcher must be run last, # after all other modifiers have popped off the params. self._modifiers = [ query.Sorter(), query.Limiter(), query.DeletedFilter(), query.AuthFilter(request), query.GroupFilter(), query.GroupAuthFilter(request), query.UserFilter(), query.NipsaFilter(request), query.AnyMatcher(), query.TagsMatcher(), query.KeyValueMatcher() ] self._aggregations = []
def _default_querybuilder(request, es): builder = query.Builder(es_version=es.version) builder.append_filter(query.DeletedFilter()) builder.append_filter(query.AuthFilter(request)) builder.append_filter(query.UriFilter(request)) builder.append_filter(query.GroupFilter()) builder.append_filter(query.GroupAuthFilter(request)) builder.append_filter(query.UserFilter()) builder.append_filter(query.NipsaFilter(request)) builder.append_matcher(query.AnyMatcher()) builder.append_matcher(query.TagsMatcher()) return builder
def default_querybuilder(request): builder = query.Builder() builder.append_filter(query.DeletedFilter()) builder.append_filter(query.AuthFilter(request)) builder.append_filter(query.UriFilter(request)) builder.append_filter(query.GroupFilter()) builder.append_filter(query.UserFilter()) builder.append_matcher(query.AnyMatcher()) builder.append_matcher(query.TagsMatcher()) for factory in request.registry.get(FILTERS_KEY, []): builder.append_filter(factory(request)) return builder
def search(self, search): search.append_modifier(query.TagsMatcher()) return search