def recipe(id): """ Renders recipe """ response = spoonacularConnection.get_recipe(id) recipe = Recipe(response.json()) reviews = Review.get_recipe_reviews_count_grouped_by_ids([int(id)]) print(reviews) return render_template('recipe.html', recipe=recipe, session=session, reviews=reviews)
def page(page): """ Renders page of recipes """ response = spoonacularConnection.get_recipes(str(page)) response_json = response.json() recipes = response_json.get('results', []) recipe_ids = get_ids_from_results(recipes) reviews = Review.get_recipe_reviews_count_grouped_by_ids(recipe_ids) pages = spoonacularConnection.num_of_pages( response_json.get('totalResults')) base_url = '/page/' return render_template('list-recipes.html', recipes=recipes, page=page, pages=pages, base_url=base_url, args={}, session=session, reviews=reviews)
def search(): """ Renders search results """ query = request.args.get('query') query_type = request.args.get('query_type') page = request.args.get('page', 1) response = spoonacularConnection.search(query, query_type, page) response_json = response.json() recipes = response_json.get('results', []) recipe_ids = get_ids_from_results(recipes) reviews = Review.get_recipe_reviews_count_grouped_by_ids(recipe_ids) pages = spoonacularConnection.num_of_pages( response_json.get('totalResults')) base_url = f'/search/?query={query}&query_type={query_type}&page=' return render_template('list-recipes.html', recipes=recipes, page=page, pages=pages, base_url=base_url, args=request.args, session=session, reviews=reviews)
def root(): """ Renders the homepage """ response = spoonacularConnection.get_recipes('1') if response.status_code == 200: response_json = response.json() recipes = response_json.get('results', []) recipe_ids = get_ids_from_results(recipes) reviews = Review.get_recipe_reviews_count_grouped_by_ids(recipe_ids) print(reviews) pages = spoonacularConnection.num_of_pages( response_json.get('totalResults')) base_url = '/page/' return render_template('list-recipes.html', recipes=recipes, page=1, base_url=base_url, pages=pages, args={}, session=session, reviews=reviews) else: return render_template('error.html', session=session)
def favorites(): """ Renders users favorites page """ try: user_id = session['user']['id'] except: return redirect('/') user_id = session['user']['id'] page = int(request.args.get('page', 1)) base_url = '/favorites/?page=' favorites = Favorite.query.filter_by(user_id=user_id).all() all_recipe_ids = get_recipe_ids_from_favorites(favorites) pages = math.ceil(len(all_recipe_ids) / OFFSET) if len(all_recipe_ids) > 0 else 1 if page == 1: offset_end = (OFFSET * page) recipe_ids = all_recipe_ids[0:offset_end] elif page > 1: offset_begin = (page - 1) * OFFSET - 1 offset_end = (OFFSET * page) recipe_ids = all_recipe_ids[offset_begin:offset_end] favorite_recipes = spoonacularConnection.get_recipes_by_ids( recipe_ids).json() if recipe_ids and len(recipe_ids) > 0 else [] reviews = Review.get_recipe_reviews_count_grouped_by_ids(recipe_ids) return render_template('list-favorites.html', session=session, title='Favorites', base_url=base_url, args={}, pages=pages, page=page, recipes=favorite_recipes, favorites=all_recipe_ids, reviews=reviews)
def get_reviews(recipe_id): if not request.args.get('count') == 'true': args = dict(request.args) args['recipe_id'] = recipe_id Review.get_recipe_reviews(args) return make_response(jsonify({'rating': True}), 200) else: reviews = Review.get_recipe_reviews_count_grouped_by_ids( [int(recipe_id)]) print(reviews) if reviews and reviews[int(recipe_id)]: return make_response( jsonify({ 'review': reviews[int(recipe_id)] if reviews[int(recipe_id)] else False }), 200) else: return make_response( jsonify({ 'review': False, 'message': 'No reviews' }), 200)