|
| 1 | +from flask import Flask, render_template, request, redirect, url_for |
| 2 | +from flask_sqlalchemy import SQLAlchemy |
| 3 | + |
| 4 | +app = Flask(__name__) |
| 5 | + |
| 6 | +app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///books.db" |
| 7 | +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False |
| 8 | +db = SQLAlchemy(app) |
| 9 | + |
| 10 | + |
| 11 | +class Book(db.Model): |
| 12 | + id = db.Column(db.Integer, primary_key=True) |
| 13 | + title = db.Column(db.String(250), unique=True, nullable=False) |
| 14 | + author = db.Column(db.String(250), nullable=False) |
| 15 | + rating = db.Column(db.Float, nullable=False) |
| 16 | + |
| 17 | + |
| 18 | +db.create_all() |
| 19 | + |
| 20 | + |
| 21 | +@app.route('/') |
| 22 | +def home(): |
| 23 | + all_books = db.session.query(Book).all() |
| 24 | + return render_template("index.html", books=all_books) |
| 25 | + |
| 26 | + |
| 27 | +@app.route("/add", methods=["GET", "POST"]) |
| 28 | +def add(): |
| 29 | + if request.method == "POST": |
| 30 | + new_book = Book( |
| 31 | + title=request.form["title"], |
| 32 | + author=request.form["author"], |
| 33 | + rating=request.form["rating"] |
| 34 | + ) |
| 35 | + db.session.add(new_book) |
| 36 | + db.session.commit() |
| 37 | + return redirect(url_for('home')) |
| 38 | + return render_template("add.html") |
| 39 | + |
| 40 | + |
| 41 | +@app.route("/edit", methods=["GET", "POST"]) |
| 42 | +def edit(): |
| 43 | + if request.method == "POST": |
| 44 | + book_id = request.form["id"] |
| 45 | + book_to_update = Book.query.get(book_id) |
| 46 | + book_to_update.rating = request.form["rating"] |
| 47 | + db.session.commit() |
| 48 | + return redirect(url_for('home')) |
| 49 | + book_id = request.args.get('id') |
| 50 | + book_selected = Book.query.get(book_id) |
| 51 | + return render_template("edit_rating.html", book=book_selected) |
| 52 | + |
| 53 | + |
| 54 | +@app.route("/delete") |
| 55 | +def delete(): |
| 56 | + book_id = request.args.get('id') |
| 57 | + |
| 58 | + book_to_delete = Book.query.get(book_id) |
| 59 | + db.session.delete(book_to_delete) |
| 60 | + db.session.commit() |
| 61 | + return redirect(url_for('home')) |
| 62 | + |
| 63 | + |
| 64 | +if __name__ == "__main__": |
| 65 | + app.run(debug=True) |
| 66 | + |
0 commit comments