Connected Succesfuly DB_CONFIG = { 'host': '64.31.22.34', 'user': 'alwhizco_VikramMahal', 'password': '+yVWqt_M_JyX', 'database': 'alwhizco_VikramMahal' } def get_db_connection(): conn = mysql.connector.connect(**DB_CONFIG) return conn def init_db(): conn = get_db_connection() cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE, password VARCHAR(255), is_admin BOOLEAN DEFAULT 0 ) ''') cursor.execute(''' CREATE TABLE IF NOT EXISTS recipes ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), ingredients TEXT, instructions TEXT, cuisine VARCHAR(255), dietary VARCHAR(255), user_id INT, FOREIGN KEY (user_id) REFERENCES users(id) ) ''') cursor.execute('SELECT * FROM users WHERE username = %s', ('admin',)) if not cursor.fetchone(): admin_password = generate_password_hash('admin123') cursor.execute('INSERT INTO users (username, password, is_admin) VALUES (%s, %s, %s)', ('admin', admin_password, 1)) conn.commit() conn.close() init_db() @app.route('/') def home(): return render_template('home.html') @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = generate_password_hash(request.form['password']) conn = get_db_connection() cursor = conn.cursor() try: cursor.execute('INSERT INTO users (username, password) VALUES (%s, %s)', (username, password)) conn.commit() except mysql.connector.IntegrityError: flash('Username already exists.') return redirect(url_for('register')) conn.close() flash('Registration successful. Please log in.') return redirect(url_for('login')) return render_template('register.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] conn = get_db_connection() cursor = conn.cursor(dictionary=True) cursor.execute('SELECT * FROM users WHERE username = %s', (username,)) user = cursor.fetchone() conn.close() if user and check_password_hash(user['password'], password): session['user_id'] = user['id'] session['username'] = user['username'] session['is_admin'] = user['is_admin'] return redirect(url_for('dashboard')) else: flash('Invalid credentials.') return render_template('login.html') @app.route('/logout') def logout(): session.clear() flash('Logged out successfully.') return redirect(url_for('home')) @app.route('/dashboard') def dashboard(): if 'user_id' not in session: return redirect(url_for('login')) conn = get_db_connection() cursor = conn.cursor(dictionary=True) cursor.execute('SELECT * FROM recipes') recipes = cursor.fetchall() conn.close() return render_template('dashboard.html', recipes=recipes) @app.route('/recipe/new', methods=['GET', 'POST']) def new_recipe(): if 'user_id' not in session: return redirect(url_for('login')) if request.method == 'POST': title = request.form['title'] ingredients = request.form['ingredients'] instructions = request.form['instructions'] cuisine = request.form['cuisine'] dietary = request.form['dietary'] conn = get_db_connection() cursor = conn.cursor() cursor.execute(''' INSERT INTO recipes (title, ingredients, instructions, cuisine, dietary, user_id) VALUES (%s, %s, %s, %s, %s, %s) ''', (title, ingredients, instructions, cuisine, dietary, session['user_id'])) conn.commit() conn.close() flash('Recipe added successfully.') return redirect(url_for('dashboard')) return render_template('recipe_form.html') @app.route('/recipe//edit', methods=['GET', 'POST']) def edit_recipe(id): if 'user_id' not in session: return redirect(url_for('login')) conn = get_db_connection() cursor = conn.cursor(dictionary=True) cursor.execute('SELECT * FROM recipes WHERE id = %s', (id,)) recipe = cursor.fetchone() if not recipe: return 'Recipe not found', 404 if recipe['user_id'] != session['user_id'] and not session['is_admin']: return 'Unauthorized', 403 if request.method == 'POST': cursor.execute(''' UPDATE recipes SET title = %s, ingredients = %s, instructions = %s, cuisine = %s, dietary = %s WHERE id = %s ''', (request.form['title'], request.form['ingredients'], request.form['instructions'], request.form['cuisine'], request.form['dietary'], id)) conn.commit() conn.close() flash('Recipe updated successfully.') return redirect(url_for('dashboard')) conn.close() return render_template('recipe_form.html', recipe=recipe) @app.route('/recipe//delete') def delete_recipe(id): if 'user_id' not in session: return redirect(url_for('login')) conn = get_db_connection() cursor = conn.cursor() cursor.execute('DELETE FROM recipes WHERE id = %s', (id,)) conn.commit() conn.close() flash('Recipe deleted successfully.') return redirect(url_for('dashboard')) @app.route('/search', methods=['GET']) def search(): if 'user_id' not in session: return redirect(url_for('login')) query = request.args.get('query') cuisine = request.args.get('cuisine') dietary = request.args.get('dietary') conn = get_db_connection() cursor = conn.cursor(dictionary=True) sql = 'SELECT * FROM recipes WHERE 1=1' params = [] if query: sql += ' AND (title LIKE %s OR ingredients LIKE %s)' params.extend(['%' + query + '%', '%' + query + '%']) if cuisine: sql += ' AND cuisine = %s' params.append(cuisine) if dietary: sql += ' AND dietary = %s' params.append(dietary) cursor.execute(sql, params) recipes = cursor.fetchall() conn.close() return render_template('dashboard.html', recipes=recipes) if __name__ == '__main__': app.run(debug=True)