def entity(id): id = str(id) try: place = mb_place.get_place_by_id(id) except mb_exceptions.NoDataFoundException: raise NotFound(gettext("Sorry, we couldn't find a place with that MusicBrainz ID.")) if current_user.is_authenticated: my_reviews, _ = db_review.list_reviews( entity_id=place['id'], entity_type='place', user_id=current_user.id ) my_review = my_reviews[0] if my_reviews else None else: my_review = None rating_form = RatingEditForm(entity_id=id, entity_type='place') rating_form.rating.data = my_review['rating'] if my_review else None limit = int(request.args.get('limit', default=10)) offset = int(request.args.get('offset', default=0)) reviews, count = db_review.list_reviews( entity_id=place['id'], entity_type='place', sort='popularity', limit=limit, offset=offset, ) avg_rating = get_avg_rating(place['id'], "place") return render_template('place/entity.html', id=place['id'], place=place, reviews=reviews, rating_form=rating_form, my_review=my_review, limit=limit, offset=offset, count=count, avg_rating=avg_rating, current_user=current_user)
def get_entity_by_id(id, type='release_group'): """A wrapper to call the correct get_*_by_id function.""" if type == 'release_group': entity = get_release_group_by_id(str(id)) elif type == 'place': entity = get_place_by_id(str(id)) elif type == 'event': entity = get_event_by_id(str(id)) return entity
def test_unknown_place(self): self.place_query.return_value = [] mb_utils.reviewed_entities = MagicMock() mb_utils.reviewed_entities.return_value = [ 'd71ffe38-5eaf-426b-9a2e-e1f21bc846df' ] place = mb_place.get_place_by_id( 'd71ffe38-5eaf-426b-9a2e-e1f21bc846df') self.assertEqual(place['name'], '[Unknown Place]')
def test_place_cache(self, place_fetch, cache_set, cache_get): mbid = "d71ffe38-5eaf-426b-9a2e-e1f21bc84609" expected_key = b"place_d71ffe38-5eaf-426b-9a2e-e1f21bc84609" place = { "id": "d71ffe38-5eaf-426b-9a2e-e1f21bc84609", "name": "Suisto", "coordinates": { 'latitude': 60.997758, 'longitude': 24.477142 }, "area": { "id": "4479c385-74d8-4a2b-bdab-f48d1e6969ba", "name": "Hämeenlinna", } } place_fetch.return_value = {mbid: place} cache_get.return_value = None get_place_by_id(mbid) # Test that first time data is fetched database is queried cache_get.assert_called_with(expected_key) place_fetch.assert_called_with([mbid], includes=[ 'artist-rels', 'place-rels', 'release-group-rels', 'url-rels' ], unknown_entities_for_missing=True) cache_set.assert_called_with(key=expected_key, val=place, time=DEFAULT_CACHE_EXPIRATION) cache_get.return_value = place cache_set.reset_mock() place_fetch.reset_mock() get_place_by_id(mbid) # Test that second time data is fetched from cache cache_get.assert_called_with(expected_key) place_fetch.assert_not_called() cache_set.assert_not_called()
def test_get_by_id(self): self.place_query.return_value = [place_suisto] place = mb_place.get_place_by_id('d71ffe38-5eaf-426b-9a2e-e1f21bc84609') self.assertEqual(place['name'], 'Suisto') self.assertEqual(place['type'], 'Venue') self.assertDictEqual(place['coordinates'], { 'latitude': 60.997758, 'longitude': 24.477142 }) self.assertDictEqual(place['area'], { 'id': '4479c385-74d8-4a2b-bdab-f48d1e6969ba', 'name': 'Hämeenlinna', })
def test_get_by_id(self): self.place_query.return_value = [place_suisto] place = mb_place.get_place_by_id( 'd71ffe38-5eaf-426b-9a2e-e1f21bc84609') self.assertEqual(place['name'], 'Suisto') self.assertEqual(place['type'], 'Venue') self.assertDictEqual(place['coordinates'], { 'latitude': 60.997758, 'longitude': 24.477142 }) self.assertDictEqual(place['area'], { 'id': '4479c385-74d8-4a2b-bdab-f48d1e6969ba', 'name': 'Hämeenlinna', })
def test_unknown_place(self): self.place_query.return_value = [] mb_utils.reviewed_entities = MagicMock() mb_utils.reviewed_entities.return_value = ['d71ffe38-5eaf-426b-9a2e-e1f21bc846df'] place = mb_place.get_place_by_id('d71ffe38-5eaf-426b-9a2e-e1f21bc846df') self.assertEqual(place['name'], '[Unknown Place]')