Exemplo n.º 1
0
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.")
Exemplo n.º 2
0
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'
Exemplo n.º 3
0
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'
Exemplo n.º 4
0
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'
Exemplo n.º 5
0
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'
Exemplo n.º 6
0
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'
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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')
Exemplo n.º 12
0
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')
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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'
Exemplo n.º 15
0
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'
Exemplo n.º 16
0
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
Exemplo n.º 17
0
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'
Exemplo n.º 18
0
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
Exemplo n.º 19
0
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
Exemplo n.º 20
0
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
Exemplo n.º 21
0
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
Exemplo n.º 22
0
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
Exemplo n.º 23
0
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
Exemplo n.º 24
0
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
Exemplo n.º 25
0
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
Exemplo n.º 26
0
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'
Exemplo n.º 27
0
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'
Exemplo n.º 28
0
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'
Exemplo n.º 29
0
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'
Exemplo n.º 30
0
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'
Exemplo n.º 31
0
 def mysql_session(self):
     return base.get_session()