def account(user): if request.method == 'GET': udao = UserDAO() if not udao.check_user_exists(user): return render_template("errors/user_not_found.html") rdao = RecipeDAO() recipes = rdao.get_recipes_for_user(user) valid_session_key = udao.check_user_session_key(user, request.cookies.get("session_key")) allowEdit = False user_bgr = udao.get_user_background(user) sdao = SubscribeDAO() subscribed = sdao.is_subscribed(request.cookies.get("user"), user) if valid_session_key: allowEdit = True return render_template("account.html", signedIn = request.cookies.get("signedIn"), user = request.cookies.get("user"), recipes = recipes, allowEdit = allowEdit, userBackground = user_bgr, subscribed = subscribed)
def favourites(user): fdao = FavouriteDAO() ids = fdao.get_users_favourites_recipe_ids(user) rdao = RecipeDAO() recipes = "" for id in ids: recipe = rdao.get_recipe_by_id(id[0]) if recipe: recipes = recipes + f"{recipe.name}|{recipe.description}|{recipe.creator}|{recipe.id}|||" return recipes
def subscribed(user): sdao = SubscribeDAO() subbed_ids = tuple([x[0] for x in sdao.get_subscribed_pages_for_user(user)]) print(subbed_ids) rdao = RecipeDAO() recipe_ids = rdao.get_subscribed_recipes(subbed_ids) recipes = "" for id in recipe_ids: recipe = rdao.get_recipe_by_id(id) if recipe: recipes = recipes + f"{recipe.name}|{recipe.description}|{recipe.creator}|{recipe.id}|||" return recipes
def recipe_delete(user, recipeName): if request.method == "DELETE": ldao = LogDAO() udao = UserDAO() valid_key = udao.check_user_session_key(user, request.cookies.get("session_key")) if valid_key: dao = RecipeDAO() dao.delete_recipe(user, recipeName.replace("-", " ")) ldao.add_log(request, request.cookies.get("user"), ldao.REQUEST_DEL_RECIPE, 1) return "Y" else: ldao.add_log(request, request.cookies.get("user"), ldao.REQUEST_DEL_RECIPE, 0) return "N"
def searchResult(): if request.method == 'GET': param = request.args.get("s") if(param): param = urllib.parse.unquote(param) dao = RecipeDAO() results = dao.get_searched_recipe(str(param)) print(results) returnHTML = "" for result in results: returnHTML += f'<div><a href="/account/{result[1]}/{result[0].replace(" ", "-")}">{result[0]}</a><a href="/account/{result[1]}">{result[1]}</a></div>' return(returnHTML)
def remove_comment(self, user, recipe_user, recipe): connection = sqlite3.connect('recipe.db') cursor = connection.cursor() udao = UserDAO() user_id = udao.get_user_id_from_name(cursor, user) rdao = RecipeDAO() recipe_id = rdao.get_recipe_id_from_user_and_name(cursor, recipe_user, recipe.replace("-", " ")) cursor.execute("DELETE FROM tbl_comment \ WHERE USER_ID = ? AND RECIPE_ID = ?", (user_id, recipe_id)) connection.commit() connection.close() return True
def add_comment(self, user, recipe_user, recipe, comment): connection = sqlite3.connect('recipe.db') cursor = connection.cursor() udao = UserDAO() user_id = udao.get_user_id_from_name(cursor, user) rdao = RecipeDAO() recipe_id = rdao.get_recipe_id_from_user_and_name(cursor, recipe_user, recipe.replace("-", " ")) if self.user_already_left_comment(cursor, user_id, recipe_id): return cursor.execute("INSERT INTO tbl_comment (USER_ID, RECIPE_ID, COMMENT_DETAILS, COMMENT_DATE) \ VALUES (?, ?, ?, ?)", (user_id, recipe_id, comment, datetime.datetime.now())) connection.commit() connection.close()
def recipe_add(user, recipeName): if request.method == 'PUT': ldao = LogDAO() udao = UserDAO() valid_key = udao.check_user_session_key(user, request.cookies.get("session_key")) if valid_key: desc = request.args.get("desc") ingredients = request.args.get("ingredients") dao = RecipeDAO() dao.add_recipe(user, recipeName, desc, ingredients) ldao.add_log(request, request.cookies.get("user"), ldao.REQUEST_ADD_RECIPE, 1) return "Y" else: ldao.add_log(request, request.cookies.get("user"), ldao.REQUEST_ADD_RECIPE, 0) return "N"
def edit_comment(self, user, recipe_user, recipe, comment): connection = sqlite3.connect('recipe.db') cursor = connection.cursor() udao = UserDAO() user_id = udao.get_user_id_from_name(cursor, user) rdao = RecipeDAO() recipe_id = rdao.get_recipe_id_from_user_and_name(cursor, recipe_user, recipe.replace("-", " ")) print(user_id, recipe_id, comment) cursor.execute("UPDATE tbl_comment \ SET COMMENT_DETAILS = ?, COMMENT_EDITED = 1 \ WHERE USER_ID = ? AND RECIPE_ID = ?", (comment, user_id, recipe_id)) connection.commit() connection.close() return True
def get_comments_for_recipe(self, user, user_recipe, recipe): connection = sqlite3.connect('recipe.db') connection.row_factory = sqlite3.Row cursor = connection.cursor() rdao = RecipeDAO() recipe_id = rdao.get_recipe_id_from_user_and_name(cursor, user_recipe, recipe.replace("-", " ")) cursor.execute("SELECT c.ID, c.USER_ID, a.USERNAME, c.RECIPE_ID, c.COMMENT_DETAILS, c.COMMENT_DATE, c.COMMENT_EDITED \ FROM tbl_comment c \ JOIN tbl_account a on a.ID = c.USER_ID \ WHERE RECIPE_ID = ?", (recipe_id,)) rows = cursor.fetchall() comments = [] for row in rows: ratings = self.get_comment_ratings_for_comment(cursor, row['ID']) comments.append(Comment(row['ID'], row['USER_ID'], row['USERNAME'], row['RECIPE_ID'], row['COMMENT_DETAILS'], row['COMMENT_DATE'], row['COMMENT_EDITED'], ratings)) connection.close() return comments
def check_if_favourited(self, user, owner, recipeName): connection = sqlite3.connect('recipe.db') cursor = connection.cursor() udao = UserDAO() user_id = udao.get_user_id_from_name(cursor, user) rdao = RecipeDAO() recipe_id = rdao.get_recipe_id_from_user_and_name(cursor, owner, recipeName) if not user_id or not recipe_id: return False cursor.execute("SELECT * FROM tbl_favourite \ WHERE USER_ID = ? AND RECIPE_ID = ?", (user_id, recipe_id)) rows = cursor.fetchall() connection.close() if len(rows) > 0: return True else: return False
def recipe(user, recipeName): if request.method == 'GET': dao = RecipeDAO() recipe = dao.get_recipe(user, recipeName.replace("-", " ")) fdao = FavouriteDAO() favourited = fdao.check_if_favourited(request.cookies.get("user"), user, recipeName.replace("-", " ")) cdao = CommentDAO() comments = cdao.get_comments_for_recipe(request.cookies.get("user"), user, recipeName) udao = UserDAO() u = udao.get_user(request.cookies.get("user")) if not recipe: return render_template("errors/recipe_not_found.html") return render_template("recipe.html", signedIn = request.cookies.get("signedIn"), user = request.cookies.get("user"), recipe = recipe, favourite = favourited, comments = comments, userobj = u)
from RecipeDAO import RecipeDAO from UserDAO import UserDAO from IngredientDAO import IngredientDAO from CommentDAO import CommentDAO from VoteDAO import VoteDAO from TokenDAO import TokenDAO from UserIngredientsDAO import UserIngredientsDAO # Read MySQL config info from config/database.ini dbConfig = configparser.ConfigParser() dbConfig.read('config/database.ini') mySQLConfig = dbConfig['MYSQL'] host, user, password, db = mySQLConfig['host'], mySQLConfig[ 'user'], mySQLConfig['password'], mySQLConfig['db'] # Initialize connection to the MySQL DB connection = pymysql.connect(host, user, password, db, charset="utf8", autocommit=True) cursor = connection.cursor() recipeDAO = RecipeDAO(cursor) userDAO = UserDAO(cursor) ingredientDAO = IngredientDAO(cursor) commentDAO = CommentDAO(cursor) voteDAO = VoteDAO(cursor) tokenDAO = TokenDAO(cursor) userIngredientsDAO = UserIngredientsDAO(cursor)