def get_distance_to_place(object_id): session = get_session() place = session.query(Place).get(object_id) if place is None: session.close() abort(404, "Place with id = %s not found" % object_id) return content = g.data user_geo_point = [content['longitude'], content['latitude']] place_geo_point = [place.geolocation.longitude, place.geolocation.latitude] session.close() geo_points = [user_geo_point, place_geo_point] response = osrm_client.client.route( coordinates=geo_points, overview=osrm.overview.full) if 'routes' in response: return str(response['routes'][0]['distance']) else: abort(500, "Internal Error: Can't get valid response from OSRM service.")
def put_new_city(): session = get_session() content = g.data locale = get_post_locale(session) city = City() name_id = str(uuid4()) locale_string = LocaleString(id=name_id, locale=locale, text=content['name']) city.name_id = name_id city.name.set(locale_string) description_id = str(uuid4()) locale_string = LocaleString(id=description_id, locale=locale, text=content['description']) city.description_id = name_id city.description.set(locale_string) city.image_link = content['image_link'] session.add(city) session.commit() session.close() return 'ok'
def add_new_favorite(): content = g.data session = get_session() entity_id = content['entity_id'] favorite = session.query(Entity).get(entity_id) if favorite is None: session.close() abort(400, "Entity with id = %s not found" % entity_id) return current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) if any(entity.id == favorite.id for entity in user.favorites): session.close() abort(409, "Entity with id = %s already added to favorites" % favorite.id) return user.favorites.append(favorite) session.commit() session.close() return 'ok'
def add_new_visited_place(): content = g.data session = get_session() place_id = content['place_id'] visited_place = session.query(Place).get(place_id) if visited_place is None: session.close() abort(400, "Place with id = %s not found" % place_id) return current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) if any(entity.id == visited_place.id for entity in user.visited_places): session.close() abort(409, "Place with id = %s already added to visited places" % visited_place.id) return user.visited_places.append(visited_place) session.commit() session.close() return 'ok'
def post_city_by_id(city_id): session = get_session() city = session.query(City).get(city_id) locale = get_post_locale(session) if city is None: session.close() abort(404, "City with id = %s not found" % city_id) return content = g.data city.name.set( LocaleString(id=city.name_id, locale=locale, text=content['name'])) city.description.set( LocaleString(id=city.description_id, locale=locale, text=content['description'])) city.image_link = content['image_link'] session.commit() session.close() return 'ok'
def admin_delete_avatar_by_user_id(user_id): session = get_session() user = session.query(User).get(user_id) current_user_id = get_jwt_identity() author = session.query(User).get(current_user_id) if user.is_admin() and not user.id == author.id: session.close() abort( 404, "Avatar which belongs to user with id = %s cannot be deleted" % user_id) return if user.is_moder() and not author.is_admin() and not user.id == author.id: session.close() abort( 403, "Not enough rights to delete avatar which belongs to user with id = %s" % user_id) return if user.image is not None: delete_image(user.image) user.image = get_default_avatar(user.name) else: return abort(400, 'User has no avatar to delete') session.commit() session.close() return 'ok'
def get_historical_persons(): session = get_session() historical_persons = session.query(HistoricalPerson).all() locale = get_locale() json_historical_persons = convert_to_json(historical_persons, locale) session.close() return json_historical_persons
def get_cities(): session = get_session() cities = session.query(City).all() locale = get_locale() json_cities = convert_to_json(cities, locale) session.close() return json_cities
def get_places(): session = get_session() places = session.query(Place).all() locale = get_locale() json_places = convert_to_json(places, locale) session.close() return json_places
def get_current_user(): session = get_session() current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) json_user = convert_to_json(user) session.close() return json_user
def create_locale(): session = get_session() reviews = session.query(Review).filter(Review.locale.is_(None)).all() for r in reviews: language = translation_init.translate.detect(r.text) r.locale = language session.commit() session.close() print('Ok')
def create_default(): session = get_session() users = session.query(User).all() for user in users: if user.image is None: user.image = get_default_avatar(user.name) session.commit() session.close() print('Ok')
def get_user_visited_by_id(): session = get_session() current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) locale = get_locale() json_visited_places = convert_to_json( list(map(lambda entity: entity.to_entity_json(locale), user.visited_places)) ) session.close() return json_visited_places
def delete_category_by_id(category_id): session = get_session() category = session.query(Category).get(category_id) if category is None: session.close() abort(404, "Category with id = %s not found" % category_id) return session.delete(category) session.commit() session.close() return 'ok'
def delete_route_by_id(route_id): session = get_session() route = session.query(Route).get(route_id) if route is None: session.close() abort(404, "Route with id = %s not found" % route_id) return session.delete(route) session.commit() session.close() return 'ok'
def upload_user_image(): session = get_session() current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) filename = upload_image(user.image) user.image = filename session.commit() session.close() return filename
def delete_city_by_id(city_id): session = get_session() city = session.query(City).get(city_id) if city is None: session.close() abort(404, "City with id = %s not found" % city_id) return session.delete(city) session.commit() session.close() return 'ok'
def get_city_by_id(city_id): session = get_session() city = session.query(City).get(city_id) if city is None: session.close() abort(404, "City with id = %s not found" % city_id) locale = get_locale() json_city = convert_to_json(city, locale) session.close() return json_city
def get_user_reviews_by_id(): limit = request.args.get('limit') session = get_session() current_user_id = get_jwt_identity() reviews = session.query(Review).filter( Review.user_id == current_user_id ).order_by(desc(Review.time)).limit(limit).all() json_reviews = convert_to_json(reviews) session.close() return json_reviews
def get_category_by_id(category_id): session = get_session() cat = session.query(Category).get(category_id) if cat is None: session.close() abort(404, "Category with id = %s not found" % category_id) locale = get_locale() json_category = convert_to_json(cat, locale) session.close() return json_category
def get_historical_person_by_id(object_id): session = get_session() historical_person = session.query(HistoricalPerson).get(object_id) if historical_person is None: session.close() abort(404, "Historical person with id = %s not found" % object_id) locale = get_locale() json_historical_person = convert_to_json(historical_person, locale) session.close() return json_historical_person
def get_route_by_id(route_id): session = get_session() route = session.query(Route).get(route_id) if route is None: session.close() abort(404, "Route with id = %s not found" % route_id) locale = get_locale() json_route = convert_to_json(route, locale) session.close() return json_route
def get_object_by_id(object_id): session = get_session() obj = session.query(Object).get(object_id) if obj is None: session.close() abort(404, "Object with id = %s not found" % object_id) locale = get_locale() json_object = convert_to_json(obj, locale) session.close() return json_object
def get_place_by_id(object_id): session = get_session() place = session.query(Place).get(object_id) if place is None: session.close() abort(404, "Place with id = %s not found" % object_id) locale = get_locale() json_place = convert_to_json(place, locale) session.close() return json_place
def get_categories(): session = get_session() categories = session.query(Category)\ .outerjoin(CategoryObject)\ .group_by(Category)\ .order_by(desc(func.count(CategoryObject.c.object_id)))\ .all() locale = get_locale() json_categories = convert_to_json(categories, locale) session.close() return json_categories
def delete_user_image(): session = get_session() current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) if user.image is not None: delete_image(user.image) user.image = get_default_avatar(user.name) else: return abort(400, 'User has no avatar to delete') session.commit() session.close() return 'ok'
def basic_register_new_user(): content = g.data session = get_session() users = session.query(User).all() username = content['username'] if any(user.name == username for user in users): session.close() abort(409, "User with name = %s already exist" % username) return email = content['email'] if '@' not in parseaddr(email)[1]: session.close() abort(400, "Invalid email") return if any(user.email == email for user in users): session.close() abort(409, "User with email = %s already exist" % email) return roles = [session.query(Role).filter( Role.name == RoleName.user.name ).first()] if 'image' in content: image = content['image'] else: image = get_default_avatar(username) user = User( name=username, email=email, roles=roles, image=image ) user.set_password(content['password']) session.add(user) session.commit() session.close() return 'ok'
def basic_update_user(): content = g.data session = get_session() users = session.query(User).all() current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) if user is None: session.close() abort(404, "User with id = %s not found" % current_user_id) return users = [u for u in users if u.id is not user.id] if 'username' in content: if any(user.name == content['username'] for user in users): session.close() abort(409, "User with name = %s already exist" % content['username']) return else: user.name = content['username'] if 'email' in content: email = content['email'] if '@' not in parseaddr(email)[1]: session.close() abort(400, "Invalid email") return if any(user.email == email for user in users): session.close() abort(409, "User with email = %s already exist" % email) return else: user.email = email if 'password' in content: user.set_password(content['password']) if 'image' in content: user.image = content['image'] session.commit() session.close() return 'ok'
def delete_favorite(entity_id): session = get_session() favorite = session.query(Entity).get(entity_id) if favorite is None: session.close() abort(404, "Entity with id = %s not found" % entity_id) return current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) user.favorites.remove(favorite) session.commit() session.close() return 'ok'
def delete_visited_place(place_id): session = get_session() visited_place = session.query(Place).get(place_id) if visited_place is None: session.close() abort(404, "Place with id = %s not found" % place_id) return current_user_id = get_jwt_identity() user = session.query(User).get(current_user_id) user.visited_places.remove(visited_place) session.commit() session.close() return 'ok'
def mysql_session(self): return base.get_session()