changed publisher link over to a 1-to-many, removed book_publisher_link table, etc. fully works in show books, edit book for publisher now

This commit is contained in:
2020-12-03 19:19:28 +11:00
parent a6cfb21d17
commit 3d12edab63
2 changed files with 7 additions and 10 deletions

14
main.py
View File

@@ -16,7 +16,7 @@ ma = Marshmallow(app)
Bootstrap(app)
from author import Author, AuthorForm, AuthorSchema, GetAuthors
from publisher import Publisher, PublisherForm, PublisherSchema, GetPublishers
from publisher import Publisher, PublisherForm, PublisherSchema, GetPublisherById
from genre import Genre, GenreForm, GenreSchema, GetGenres
from condition import Condition, ConditionForm, ConditionSchema, GetConditionById
from covertype import Covertype, CovertypeForm, CovertypeSchema, GetCovertypeById
@@ -31,11 +31,6 @@ book_author_link = db.Table('book_author_link', db.Model.metadata,
db.Column('author_id', db.Integer, db.ForeignKey('author.id'))
)
book_publisher_link = db.Table('book_publisher_link', db.Model.metadata,
db.Column('book_id', db.Integer, db.ForeignKey('book.id')),
db.Column('publisher_id', db.Integer, db.ForeignKey('publisher.id'))
)
book_genre_link = db.Table('book_genre_link', db.Model.metadata,
db.Column('book_id', db.Integer, db.ForeignKey('book.id')),
db.Column('genre_id', db.Integer, db.ForeignKey('genre.id'))
@@ -75,7 +70,7 @@ class Book(db.Model):
id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True)
title = db.Column(db.String(100), unique=True, nullable=False)
author = db.relationship('Author', secondary=book_author_link)
publisher = db.relationship('Publisher', secondary=book_publisher_link)
publisher = db.Column(db.Integer, db.ForeignKey('publisher.id'))
genre = db.relationship('Genre', secondary=book_genre_link )
loan = db.relationship('Loan', secondary=Book_Loan_Link.__table__);
series = db.relationship('Series', secondary=Book_Series_Link.__table__);
@@ -154,7 +149,6 @@ class Book_Series_LinkSchema(ma.SQLAlchemyAutoSchema):
# so I just hacked a list of keys in book.html
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)
series = ma.Nested(SeriesSchema, many=True)
@@ -182,11 +176,11 @@ class BookForm(FlaskForm):
app.jinja_env.globals['GetCovertypeById'] = GetCovertypeById
app.jinja_env.globals['GetOwnedById'] = GetOwnedById
app.jinja_env.globals['GetConditionById'] = GetConditionById
app.jinja_env.globals['GetPublisherById'] = GetPublisherById
app.jinja_env.globals['SeriesBookNum'] = SeriesBookNum
### DDP: do I need many=True on Author as books have many authors? (or in BookSchema declaration above?)
book_schema = BookSchema()
books_schema = BookSchema(many=True)
################################# helper functions ###################################
def GetBookIdFromSeriesByBookNum( series_id, book_num ):
@@ -341,6 +335,7 @@ def book(id):
book.owned = request.form['owned']
book.covertype = request.form['covertype']
book.condition = request.form['condition']
book.publisher = request.form['publisher']
book.year_published = request.form['year_published']
book.rating = request.form['rating']
book.notes = request.form['notes']
@@ -369,7 +364,6 @@ def book(id):
message="Err... Failed to update Book (id={})".format(id)
else:
book_form=BookForm(obj=book)
book_form.publisher.default = book.publisher[0].id
author_list = GetAuthors()
genre_list = GetGenres()

View File

@@ -68,3 +68,6 @@ def publisher(id):
publisher_form = PublisherForm(request.values, obj=publisher)
message=""
return render_template("edit_id_name.html", publisher=publisher, alert=alert, message=message, form=publisher_form, page_title='Edit Publisher')
def GetPublisherById(id):
return Publisher.query.get(id).name