Пример #1
0
def trigger_gazettes_search(
    territory_id: str = None,
    since: date = None,
    until: date = None,
    keywords: List[str] = None,
    offset: int = 0,
    size: int = 10,
    fragment_size: int = 150,
    number_of_fragments: int = 1,
    pre_tags: List[str] = [""],
    post_tags: List[str] = [""],
    sort_by: SortBy = SortBy.DESCENDING_DATE,
):
    gazettes_count, gazettes = app.gazettes.get_gazettes(
        GazetteRequest(
            territory_id,
            since=since,
            until=until,
            keywords=keywords,
            offset=offset,
            size=size,
            fragment_size=fragment_size,
            number_of_fragments=number_of_fragments,
            pre_tags=pre_tags,
            post_tags=post_tags,
            sort_by=sort_by.value,
        ))
    response = {
        "total_gazettes": 0,
        "gazettes": [],
    }
    if gazettes_count > 0 and gazettes:
        response["gazettes"] = gazettes
        response["total_gazettes"] = gazettes_count
    return response
 def test_should_foward_filter_to_gateway(self):
     gazette_access = GazetteAccess(self.mock_data_gateway)
     list(
         self.gazette_access.get_gazettes(filters=GazetteRequest(
             territory_id="4205902")))
     self.mock_data_gateway.get_gazettes.assert_called_once_with(
         territory_id="4205902")
Пример #3
0
 def test_GazetteRequest_should_territory_id_attribute(self):
     territory_id = "1234"
     since = date.today()
     until = date.today() - timedelta(days=1)
     keywords = ["cnpj", "bla", "foo", "bar"]
     offset = 10
     size = 100
     request = GazetteRequest(territory_id, since, until, keywords, offset, size)
     self.assertEqual(
         territory_id, request.territory_id, msg="Territory ID is invalid"
     )
     self.assertEqual(since, request.since, msg="'Since' date is invalid")
     self.assertEqual(until, request.until, msg="'Until' date is invalid")
     self.assertEqual(keywords, request.keywords, msg="Keywords are invalid")
     self.assertEqual(offset, request.offset, msg="Offset are invalid")
     self.assertEqual(size, request.size, msg="Invalid number of items")
Пример #4
0
 def test_GazetteRequest_should_territory_id_attribute(self):
     territory_id = "1234"
     since = date.today()
     until = date.today() - timedelta(days=1)
     querystring = "cnpj bla foo bar"
     offset = 10
     size = 100
     request = GazetteRequest(territory_id, since, until, querystring,
                              offset, size)
     self.assertEqual(territory_id,
                      request.territory_id,
                      msg="Territory ID is invalid")
     self.assertEqual(since, request.since, msg="'Since' date is invalid")
     self.assertEqual(until, request.until, msg="'Until' date is invalid")
     self.assertEqual(querystring,
                      request.querystring,
                      msg="Querystring is invalid")
     self.assertEqual(offset, request.offset, msg="Offset are invalid")
     self.assertEqual(size, request.size, msg="Invalid number of items")
Пример #5
0
 def test_should_foward_page_fields_filter_to_gateway(self):
     gazette_access = GazetteAccess(self.mock_data_gateway,
                                    self.mock_database_gateway)
     list(
         self.gazette_access.get_gazettes(
             filters=GazetteRequest(offset=10, size=100))[1])
     self.mock_data_gateway.get_gazettes.assert_called_once_with(
         until=None,
         since=None,
         territory_id=None,
         querystring=None,
         offset=10,
         size=100,
         fragment_size=150,
         number_of_fragments=1,
         pre_tags=[""],
         post_tags=[""],
         sort_by="relevance",
     )
Пример #6
0
 def test_should_foward_until_date_filter_to_gateway(self):
     gazette_access = GazetteAccess(
         self.mock_data_gateway, self.mock_database_gateway
     )
     list(
         self.gazette_access.get_gazettes(
             filters=GazetteRequest(until=date.today())
         )[1]
     )
     self.mock_data_gateway.get_gazettes.assert_called_once_with(
         until=date.today(),
         since=None,
         territory_id=None,
         keywords=None,
         offset=0,
         size=10,
         fragment_size=150,
         number_of_fragments=1,
         pre_tags=[""],
         post_tags=[""],
         sort_by="descending_date",
     )
Пример #7
0
 def test_gazette_request_creation(self):
     gazette_request = GazetteRequest("ID")
     self.assertIsInstance(gazette_request.territory_id, str)
     self.assertEqual("ID", gazette_request.territory_id)
Пример #8
0
async def get_gazettes(territory_id: str):
    gazettes = app.gazettes.get_gazettes(GazetteRequest(territory_id))
    if gazettes:
        return [GazetteItem(**gazette) for gazette in gazettes]
    return []
Пример #9
0
async def get_gazettes(
    territory_ids: List[str] = Query(
        [],
        description=
        "Search in gazettes published by cities with the given 7-digit IBGE IDs (an empty field searches in all available cities).",
    ),
    since: date = Query(
        None,
        description=
        "Search in gazettes published on given date or after (format: YYYY-MM-DD).",
    ),
    until: date = Query(
        None,
        description=
        "Search in gazettes published on given date or before (format: YYYY-MM-DD).",
    ),
    querystring: str = Query(
        "",
        description=
        'Search in gazettes using ElasticSearch\'s "simple query string syntax" (an empty field returns no excerpts, only the results metadata).',
    ),
    excerpt_size: int = Query(
        500,
        description=
        "Maximum number of characters that an excerpt should display (use with caution).",
    ),
    number_of_excerpts: int = Query(
        1,
        description=
        "Maximum number of excerpts of a gazette to be returned (use with caution).",
    ),
    pre_tags: List[str] = Query(
        [""],
        description=
        "List of strings (usually HTML tags) to be inserted before the text which matches the query in the excerpts.",
    ),
    post_tags: List[str] = Query(
        [""],
        description=
        "List of strings (usually HTML tags) to be inserted after the text which matches the query in the excerpts.",
    ),
    size: int = Query(
        10,
        description=
        "Maximum number of results to be returned in the response (use with caution).",
    ),
    offset: int = Query(
        default=0,
        description="Number of search results to be skipped in the response.",
    ),
    sort_by: SortBy = Query(
        SortBy.RELEVANCE,
        description="How to sort the search results.",
    ),
):
    gazette_request = GazetteRequest(
        territory_ids=territory_ids,
        since=since,
        until=until,
        querystring=querystring,
        excerpt_size=excerpt_size,
        number_of_excerpts=number_of_excerpts,
        pre_tags=pre_tags,
        post_tags=post_tags,
        size=size,
        offset=offset,
        sort_by=sort_by.value,
    )
    gazettes_count, gazettes = app.gazettes.get_gazettes(gazette_request)
    return {
        "total_gazettes": gazettes_count,
        "gazettes": gazettes,
    }