Exemplo n.º 1
0
    def as_dict(self):
        representation = HALRepresentation({"query": self.search, "size": self.size})
        url_kwargs = {}
        if self.search:
            url_kwargs["q"] = self.search
        if self.type:
            url_kwargs["type"] = self.type
        if self.type_exact:
            url_kwargs["type_exact"] = self.type_exact
        if self.facets:
            url_kwargs["facet"] = self.facets.keys()
        if self.other_args:
            url_kwargs.update(self.other_args)

        representation.add_link("self", url_for(self.endpoint, start=self.start, count=self.count, **url_kwargs))
        representation.add_links(get_nav_links(self.endpoint, self.start, self.count, self.size, **url_kwargs))
        representation.add_embed("pois", [HALPOIRepresentation(r, "places.poidetail").as_dict() for r in self.results])
        if self.facets:
            for field_name, facet_counts in self.facets.items():
                curie = FACET_CURIE
                friendly_name = field_name
                if field_name in FACET_RENAME:
                    curie, friendly_name = FACET_RENAME[field_name]
                for val, count in facet_counts.items():
                    kwargs = {"value": val, "count": count}
                    if field_name in FACET_BY_TYPE:
                        kwargs["title"] = find_type_name(val)
                        kwargs["name"] = val
                    url_kwargs[field_name] = val
                    representation.update_link(
                        "%s:%s" % (curie, friendly_name), url_for(self.endpoint, **url_kwargs), **kwargs
                    )
                    del url_kwargs[field_name]
        return representation.as_dict()
Exemplo n.º 2
0
 def test_find_type_name_old_api(self):
     # Old API allows type to be passed as a single element not a list
     # NOTE: always returns a list
     self.assertEqual(["University car park"], find_type_name("/transport/car-park/university"))
Exemplo n.º 3
0
 def test_find_type_name(self):
     self.assertEqual(["University car park"], find_type_name(["/transport/car-park/university"]))
Exemplo n.º 4
0
 def test_find_multiple_type_names(self):
     self.assertEqual(["University car park", "Transport"], find_type_name(["/transport/car-park/university", "/transport"]))
Exemplo n.º 5
0
 def test_find_type_name_plural(self):
     self.assertEqual(["Book shops"], find_type_name("/amenities/shop/book", singular=False))