Esempio n. 1
0
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)
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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"
Esempio n. 5
0
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)
Esempio n. 6
0
    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
Esempio n. 7
0
    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()
Esempio n. 8
0
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"
Esempio n. 9
0
    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
Esempio n. 10
0
    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
Esempio n. 11
0
    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        
Esempio n. 12
0
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)
Esempio n. 13
0
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)