| from flask import Flask, render_template, request, redirect, url_for, session, flash |
| from flask_sqlalchemy import SQLAlchemy |
| from werkzeug.security import generate_password_hash, check_password_hash |
|
|
|
|
| |
| app = Flask(__name__) |
| app.secret_key = 'your_super_secret_key' |
|
|
| |
| app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' |
| app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False |
|
|
| import sqlite3 |
| from datetime import timedelta |
|
|
| |
| app = Flask(__name__) |
|
|
| |
| app.secret_key = "supersecretkey" |
|
|
| |
| app.permanent_session_lifetime = timedelta(days=7) |
|
|
|
|
| |
| def get_db_connection(): |
| |
| conn = sqlite3.connect("users.db") |
| conn.row_factory = sqlite3.Row |
| return conn |
| |
| |
| db = SQLAlchemy(app) |
|
|
| |
| |
| |
|
|
| class User(db.Model): |
| id = db.Column(db.Integer, primary_key=True) |
| username = db.Column(db.String(80), unique=True, nullable=False) |
| password = db.Column(db.String(200), nullable=False) |
| feedbacks = db.relationship('Feedback', backref='user', lazy=True) |
|
|
| class Feedback(db.Model): |
| id = db.Column(db.Integer, primary_key=True) |
| message = db.Column(db.Text, nullable=False) |
| user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) |
|
|
| |
| |
| |
|
|
| @app.before_request |
| def create_tables(): |
| db.create_all() |
|
|
| @app.route('/') |
| def home(): |
| return redirect(url_for('register')) |
|
|
| @app.route('/register', methods=['GET', 'POST']) |
| def register(): |
| if request.method == 'POST': |
| username = request.form['username'] |
| password = request.form['password'] |
|
|
| existing_user = User.query.filter_by(username=username).first() |
| if existing_user: |
| flash('Username already exists. Please choose another.', 'danger') |
| else: |
| hashed_pw = generate_password_hash(password) |
| new_user = User(username=username, password=hashed_pw) |
| db.session.add(new_user) |
| db.session.commit() |
| flash('Registration successful! Please login.', 'success') |
| 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'] |
|
|
| user = User.query.filter_by(username=username).first() |
| if user and check_password_hash(user.password, password): |
| session['user'] = user.username |
| flash('Logged in successfully!', 'success') |
| return redirect(url_for('welcome')) |
| else: |
| flash('Invalid credentials. Try again.', 'danger') |
| return render_template('login.html') |
|
|
| @app.route('/welcome') |
| def welcome(): |
| if 'user' not in session: |
| flash('Please log in first.', 'warning') |
| return redirect(url_for('login')) |
| return render_template('welcome.html', username=session['user']) |
|
|
| @app.route('/feedback', methods=['GET', 'POST']) |
| def feedback(): |
| if 'user' not in session: |
| flash('Please log in first.', 'warning') |
| return redirect(url_for('login')) |
|
|
| user = User.query.filter_by(username=session['user']).first() |
|
|
| if request.method == 'POST': |
| msg = request.form['message'] |
| feedback_entry = Feedback(message=msg, user=user) |
| db.session.add(feedback_entry) |
| db.session.commit() |
| flash('Feedback received! Thank you.', 'success') |
| return render_template('feedback.html', message=msg) |
|
|
| return render_template('feedback.html', message=None) |
|
|
| @app.route('/logout') |
| def logout(): |
| session.pop('user', None) |
| flash('Logged out successfully.', 'info') |
| return redirect(url_for('login')) |
|
|
| |
| |
| |
|
|
| if __name__ == '__main__': |
| app.run(host="0.0.0.0", port=7860, debug=True) |
|
|