From d669ef71a48bcf42e41b3dc9722b7ee7dbf4fc0d Mon Sep 17 00:00:00 2001 From: Damien De Paoli Date: Wed, 18 Nov 2020 19:58:41 +1100 Subject: [PATCH] added in loans support, also particular route for book_for_loan without markup used as div content on loan.html page via ajax load --- main.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index d58bc9c..747bec9 100644 --- a/main.py +++ b/main.py @@ -22,6 +22,7 @@ from condition import Condition, ConditionForm, ConditionSchema from covertype import Covertype, CovertypeForm, CovertypeSchema from owned import Owned, OwnedForm, OwnedSchema from rating import Rating, RatingForm, RatingSchema +from loan import Loan, LoanForm, LoanSchema ####################################### CLASSES / DB model ####################################### book_author_link = db.Table('book_author_link', db.Model.metadata, @@ -39,6 +40,11 @@ book_genre_link = db.Table('book_genre_link', db.Model.metadata, db.Column('genre_id', db.Integer, db.ForeignKey('genre.id')) ) +class Book_Loan_Link(db.Model): + __tablename__ = "book_loan_link" + book_id = db.Column(db.Integer, db.ForeignKey('book.id'), unique=True, nullable=False, primary_key=True) + loan_id = db.Column(db.Integer, db.ForeignKey('loan.id'), unique=True, nullable=False, primary_key=True) + class Book_Sub_Book_Link(db.Model): __tablename__ = "book_sub_book_link" book_id = db.Column(db.Integer, db.ForeignKey('book.id'), unique=True, nullable=False, primary_key=True) @@ -54,6 +60,7 @@ class Book(db.Model): author = db.relationship('Author', secondary=book_author_link) publisher = db.relationship('Publisher', secondary=book_publisher_link) genre = db.relationship('Genre', secondary=book_genre_link ) + loan = db.relationship('Loan', secondary=Book_Loan_Link.__table__); year_published = db.Column(db.Integer) condition = db.Column(db.Integer, db.ForeignKey('condition.id')) covertype = db.Column(db.Integer, db.ForeignKey('covertype.id')) @@ -80,6 +87,7 @@ class BookSchema(ma.SQLAlchemyAutoSchema): author = ma.Nested(AuthorSchema, many=True) publisher = ma.Nested(PublisherSchema, many=True) genre = ma.Nested(GenreSchema, many=True) + loan = ma.Nested(LoanSchema, many=True) parent_ref = ma.Nested(Book_Sub_Book_LinkSchema, many=True) child_ref = ma.Nested(Book_Sub_Book_LinkSchema, many=True) class Meta: model = Book @@ -117,6 +125,14 @@ def books(): return render_template("books.html", books=books) +@app.route("/books_for_loan/", methods=["GET"]) +def books_for_loan(id): +# books = db.engine.execute ( "select * from book_loan_link where loan_id = {}".format( id ) ) + print( id ) + books = Book.query.join(Book_Loan_Link).filter(Book_Loan_Link.loan_id==id).order_by(Book.id).all() + print( books ) + return render_template("books_for_loan.html", books=books) + @app.route("/book/", methods=["GET"]) def book(id): book = Book.query.get(id) @@ -147,7 +163,6 @@ def book(id): book_form.covertype.default = book.covertype book_form.owned.default = book.owned book_form.rating.default = book.rating - print(book_form) book_form.process() return render_template("book.html", books=book_s, subs=sub_book, book_form=book_form )