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()
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"))
def test_find_type_name(self): self.assertEqual(["University car park"], find_type_name(["/transport/car-park/university"]))
def test_find_multiple_type_names(self): self.assertEqual(["University car park", "Transport"], find_type_name(["/transport/car-park/university", "/transport"]))
def test_find_type_name_plural(self): self.assertEqual(["Book shops"], find_type_name("/amenities/shop/book", singular=False))