Пример #1
0
async def test_parse_metadata(dummy_guillotina):
    from guillotina.contrib.catalog.pg import PGSearchUtility

    util = PGSearchUtility()
    with mocks.MockTransaction():
        content = test_utils.create_content(Container)
        query = parse_query(content, {"_metadata": "foobar"})
        result = util.load_meatdata(query, {"foobar": "foobar", "blah": "blah"})
        assert result == {"foobar": "foobar"}

        query = parse_query(content, {"_metadata_not": "foobar"})
        result = util.load_meatdata(query, {"foobar": "foobar", "blah": "blah"})
        assert result == {"blah": "blah"}
Пример #2
0
 async def unrestrictedSearch(self, context: IBaseObject,
                              query: typing.Any):
     """
     Search query without restriction, uses parser to transform query
     """
     parsed_query = parse_query(context, query, self)
     return await self._query(context, parsed_query, True)  # type: ignore
Пример #3
0
async def test_build_pg_query(dummy_guillotina):
    from guillotina.contrib.catalog.pg import PGSearchUtility
    util = PGSearchUtility()
    with mocks.MockTransaction():
        content = test_utils.create_content(Container)
        query = parse_query(content, {'uuid': content.uuid}, util)
        assert content.uuid == query['wheres_arguments'][0]
        assert "json->'uuid'" in query['wheres'][0]
Пример #4
0
 async def query_aggregation(self, context: IBaseObject, query: typing.Any):
     '''
     Raw search query, uses parser to transform query
     '''
     parsed_query = parse_query(context, query, self)
     container = find_container(context)
     if container is not None:
         return await self.aggregation(container, parsed_query)
     raise ContainerNotFound()
Пример #5
0
 async def search(self, context: IBaseObject, query: typing.Any):
     """
     Search query, uses parser to transform query
     """
     parsed_query = parse_query(context, query, self)
     container = find_container(context)
     if container is not None:
         return await self._query(container, parsed_query)  # type: ignore
     raise ContainerNotFound()
Пример #6
0
async def search_get(context, request):
    query = request.query.copy()
    search = get_search_utility(query)
    if search is None:
        return {'@id': request.url, 'items': [], 'items_total': 0}

    parsed_query = parse_query(context, query, search)
    container = find_container(context)
    result = await search.search(container, parsed_query)

    return {
        '@id': request.url,
        'items': result['member'],
        'items_total': result['items_count'],
        'batching': {
            'from': parsed_query['_from'] or 0,
            'size': parsed_query['size']
        }
    }
 def set_search(self, search):
     if self.container is None:
         raise KeyError('Container needed to be defined')
     self.search = search
     self.parsed_query = parse_query(self.context, self.search,
                                     self.utility)
Пример #8
0
 async def search(self, context: IBaseObject, query: typing.Any):
     """
     Search query, uses parser to transform query
     """
     parsed_query = parse_query(context, query, self)
     return await self._query(context, parsed_query)  # type: ignore
Пример #9
0
 async def query_aggregation(self, context: IBaseObject, query: typing.Any):
     """
     Raw search query, uses parser to transform query
     """
     parsed_query = parse_query(context, query, self)
     return await self.aggregation(context, parsed_query)