예제 #1
0
def update_user_restaurant_relationship(user_id, restaurant_id):
    """Make restaurant a favorite of the user."""
    #TODO: Make user able to un-favorite a restaurant

    restaurant = crud.get_restaurant_by_id(restaurant_id)
    user = crud.get_user_by_id(user_id)

    # Check if restaurant is in database
    if not restaurant:
        id = request.json['id']
        name = request.json['name']
        cuisine = request.json['categories'][0]['title']
        address = "\n".join(request.json['location']['display_address'])
        longitude = request.json['coordinates']['longitude']
        latitude = request.json['coordinates']['latitude']
        image_url = request.json['image_url']

        restaurant = crud.create_restaurant(id, name, cuisine, address,
                                            longitude, latitude, image_url)

    crud.create_user_restaurant_relationship(user, restaurant)

    return jsonify({
        'status': 'success',
        'message': "Restaurant added to user's favorites."
    })
예제 #2
0
def get_restaurants_seach():
    location = request.args.get('location')
    longitude = request.args.get('longitude')
    latitude = request.args.get('latitude')
    categories = request.args.get('categories')
    price = request.args.get('price')
    sort_by = request.args.get('sort_by')

    yelp_res = YelpAPI(API_KEY).search_query(location=location,
                                             longitude=longitude,
                                             latitude=latitude,
                                             categories=categories,
                                             price=price,
                                             sort_by=sort_by,
                                             limit=5)

    yelp_list = yelp_res["businesses"]
    biz_list = []

    user_id = session['user_id']
    user = crud.get_user_by_id(user_id)

    for idx in range(len(yelp_list)):
        yelp_id = yelp_list[idx]["id"]
        res = crud.get_restaurant_by_id(yelp_id)
        group_name = None
        if 'group_name' in request.cookies:
            group_name = request.cookies["group_name"]
        like = crud.get_like(user, res, group_name)
        biz = YelpAPI(API_KEY).business_query(id=yelp_id)
        biz_res = restaurant_from_yelp(biz, like, like_count=0)

        biz_list.append(biz_res)

    return jsonify({"businesses": biz_list})
예제 #3
0
def delete_restaurant_for_user(user_id, restaurant_id):
    user = crud.get_user_by_id(user_id)
    restaurant = crud.get_restaurant_by_id(restaurant_id)
    crud.delete_user_restaurant_relationship(user, restaurant)

    return jsonify({
        'status': 'success',
        'message': 'Restaurant successfully removed from favorites.'
    })
예제 #4
0
def is_liked(yelp_id):
    user_id = session['user_id']
    user = crud.get_user_by_id(user_id)
    res = crud.get_restaurant_by_id(yelp_id)
    group_name = None
    if 'group_name' in request.cookies:
        group_name = request.cookies["group_name"]

    if not res:
        crud.create_restaurant(yelp_id)
        res = crud.get_restaurant_by_id(yelp_id)

    like = crud.get_like(user, res, group_name)

    if like:
        crud.delete_like(like)
    else:
        crud.create_like(user, res, group_name)

    return jsonify({'liked': like == None})
예제 #5
0
def get_a_restaurant_for_user(user_id, restaurant_id):
    """Get restaurant for a user.
        Give status if restaurant is favorited by user.
        Return error if restaurant is not found."""

    user = crud.get_user_by_id(user_id)
    restaurant = crud.get_restaurant_by_id(restaurant_id)

    if not restaurant:
        return jsonify({'status': 'error', 'message': 'Restaurant not found.'})

    result = {}
    result['restaurant'] = restaurant.to_dict()

    if restaurant in user.favorites:
        result['favorited'] = 'true'

    return jsonify(result)
예제 #6
0
def create_meetup():
    """Create a new meetup."""
    name = request.form.get('name')
    date = datetime.strptime(request.form.get('date'), '%Y-%m-%dT%H:%M')
    capacity = request.form.get('capacity')
    attendees_count = 0
    description = request.form.get('description')
    restaurant_id = request.form.get('restaurant_id')
    host_id = request.form.get('host_id')
    image = request.files.get('image')
    image_url = None

    restaurant = crud.get_restaurant_by_id(restaurant_id)
    host = crud.get_user_by_id(host_id)

    if image:
        cloudinary_upload = cloudinary.uploader.upload(image)
        image_url = cloudinary_upload['url'].partition("upload")[2]

    meetup = crud.create_meetup(name, date, capacity, attendees_count,
                                description, image_url, restaurant, host)

    notification_data = {
        'message': f'There is a new event at {restaurant.name}.',
        'link': 'Go to meetup.',
        'url': f'/meetup/{meetup.id}'
    }

    notifications = crud.create_many_notifications(
        'new_meetup', restaurant_id, json.dumps(notification_data), host)

    return jsonify({
        'status': 'success',
        'message': 'Meetup created successfully.',
        'meetup': meetup.to_dict()
    })
예제 #7
0
def get_restaurant(id):
    """Return restaurant information."""
    return jsonify(crud.get_restaurant_by_id(id).to_dict())