diff --git a/main.py b/main.py index 5d33496..d926dc6 100644 --- a/main.py +++ b/main.py @@ -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() diff --git a/publisher.py b/publisher.py index 68f379b..367dc74 100644 --- a/publisher.py +++ b/publisher.py @@ -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