from flask import Flask, render_template, redirect, url_for, request, abort, g import json from book import Book import isbn_db app = Flask(__name__) app.config["DATABASE"] = "data/books.sqlite" @app.route("/submit-isbn") def submit_isbn(): if "isbn" not in request.args: return "/submit-isbn?isbn=xxxxxx" try: book = Book(request.args["isbn"]) except ValueError: return "Pas le bon format de QR code" try: book.load() except KeyError: isbn_db.add_book(book) return "Pas trouvé, à rajouter manuellement" print("Got ", book) if isbn_db.add_book(book) == "duplicate": return f"{book.title} ajouté (plusieurs occurrences)" return f"{book.title} ajouté" @app.route("/") def index(): return render_template("index.html", books=isbn_db.get_all_books()) @app.route("/delete-book", methods=["POST"]) def delete_book(): if "isbn" not in request.form: return "missing isbn" isbn_db.delete_book(request.form["isbn"]) return redirect("/") @app.route("/update-book", methods=["POST"]) def update_book(): attributes = ["isbn", "count", "title", "author", "publisher", "publish_date"] if True in [i not in request.form for i in attributes]: return "missing an attribute" form_data = request.form.copy() for attribute in attributes: if form_data[attribute] == "None": form_data[attribute] = None book = Book(form_data["isbn"]) book._manual_load( form_data["title"], publisher=form_data["publisher"], publish_date=form_data["publish_date"], author=form_data["author"], count=int(form_data["count"]) ) isbn_db.update_book(book) return redirect("/") @app.after_request def after_request(response): """Automatically close db after each request""" if ('db' in g) and (g.db is not None): g.db.close() return response