def get_achievement_photo(achievement_id): try: from Tools import rescale from Models import Achievement import cloudstorage as gcs from search import nearby_search if achievement_id == 'nearby': print 'nearby' lon = request.query['lon'] lat = request.query['lat'] place_documents = nearby_search(lon, lat, 500000) print place_documents if place_documents is None: return json.dumps({'status_code': 204}) achievement_id = place_documents[0]['achievement_id'] print achievement_id achievement = Achievement.get_by_id(int(achievement_id)) pictures = list(achievement.pictures) picture_id = pictures[0] size = [int(request.query['x']), int(request.query['y'])] gcs_filename = '/thebucket/picture/' + picture_id + '/photo' gcs_file = gcs.open(gcs_filename) data = gcs_file.read() return rescale.rescale(data, *size) except BaseException, ex: logging.exception("Exception: %s" % ex) print(str(ex)) return json.dumps({"status_code": 400})
def update(): try: from Models import Achievement, UserDetails from UserManagement import add_achievement user_id = request.json['user_id'] print user_id user_details = UserDetails.get_by_id(int(user_id)) if user_details is None: return json.dumps(dict(status_code=204, error_message="user_id not found")) lon = request.json["lon"] lat = request.json["lat"] from search import nearby_search nearby_places = nearby_search(lon, lat, 4500) achievement_ids = [] for result in nearby_places: if int(result['radius']) >= int(result['distance']): achievement_id = result['achievement_id'] added_id = add_achievement(int(achievement_id), int(user_id)) if added_id is not None: achievement_ids.append(int(added_id)) if not achievement_ids: return json.dumps(dict(status_code=204)) else: return json.dumps(dict(status_code=200, achievements=achievement_ids)) except BaseException, ex: logging.exception("Uh Oh - %s" % ex) return json.dumps({"status_code": 400, "Exception": str(ex)})
def maps_nearby(): from Models import UserDetails from google.appengine.api import search lon = request.query['lon'] lat = request.query['lat'] index = search.Index(name="places_index") from search import nearby_search nearby_places = nearby_search(lon, lat, 500000) places_of_interest = [] for scored_document in nearby_places: place = {} _id = scored_document['achievement_id'] location = scored_document['location'] place['id'] = _id location = dict(lon=location.longitude, lat=location.latitude) place['location'] = location places_of_interest.append(place) print place return json.dumps(dict(places_of_interest=places_of_interest))