diff --git a/main.py b/main.py index 8f71cf2..b1a0d0e 100644 --- a/main.py +++ b/main.py @@ -4,7 +4,9 @@ from flask_marshmallow import Marshmallow from flask_bootstrap import Bootstrap from wtforms import SubmitField, StringField, HiddenField, SelectField, IntegerField, TextAreaField, validators from flask_wtf import FlaskForm +from status import st, Status +####################################### Flask App globals ####################################### app = Flask(__name__) ### what is this value? I gather I should chagne it? DB_URL = 'postgresql+psycopg2://ddp:NWNlfa01@127.0.0.1:5432/library' @@ -15,6 +17,7 @@ db = SQLAlchemy(app) ma = Marshmallow(app) Bootstrap(app) +################################# Now, import non-book classes ################################### from author import Author, AuthorForm, AuthorSchema, GetAuthors from publisher import Publisher, PublisherForm, PublisherSchema, GetPublisherById from genre import Genre, GenreForm, GenreSchema, GetGenres @@ -173,16 +176,6 @@ class BookForm(FlaskForm): delete = SubmitField('Delete' ) -# allow jinja2 to call this python function -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() - ################################# helper functions ################################### def GetBookIdFromSeriesByBookNum( series_id, book_num ): tmp_book = Book_Series_Link.query.filter(Book_Series_Link.series_id==series_id,Book_Series_Link.book_num==book_num).all() @@ -199,6 +192,18 @@ def GetBookIdFromBookSubBookLinkByIdAndSubBookNum( book_id, sub_book_num ): tmp_bsbl = Book_Sub_Book_Link.query.filter(Book_Sub_Book_Link.book_id==book_id, Book_Sub_Book_Link.sub_book_num==sub_book_num ).all() return tmp_bsbl[0].sub_book_id +####################################### GLOBALS ####################################### +# allow jinja2 to call this python function +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 +app.jinja_env.globals['ClearStatus'] = st.ClearMessage + +### DDP: do I need many=True on Author as books have many authors? (or in BookSchema declaration above?) +book_schema = BookSchema() + ####################################### ROUTES ####################################### @app.route("/books", methods=["GET"]) def books(): diff --git a/owned.py b/owned.py index 37a788d..dcc5373 100644 --- a/owned.py +++ b/owned.py @@ -1,9 +1,9 @@ from wtforms import SubmitField, StringField, HiddenField, SelectField, validators -from flask import request, render_template +from flask import request, render_template, redirect from flask_wtf import FlaskForm from __main__ import db, app, ma from sqlalchemy import func, Sequence - +from status import st, Status ################################################################################ # Class describing Owned in the database, and via sqlalchemy, connected to the DB as well @@ -38,26 +38,24 @@ class OwnedForm(FlaskForm): @app.route("/owneds", methods=["GET"]) def owneds(): owneds = Owned.query.order_by('id').all() - return render_template("show_id_name.html", objects=owneds, page_title='Show All Ownership types', url_base='owned') + return render_template("show_id_name.html", objects=owneds, page_title='Show All Ownership types', url_base='owned', alert=st.GetAlert(), message=st.GetMessage() ) ################################################################################ # /owned -> GET/POST -> creates a new owned type and when created, takes you back to /owneds ################################################################################ @app.route("/owned", methods=["GET", "POST"]) def new_owned(): - alert="success" owned_form = OwnedForm(request.form) if 'name' not in request.form: owned=None - message="" - return render_template("edit_id_name.html", owned=owned, alert=alert, message=message, form=owned_form, page_title='Create new Owned Type' ) + return render_template("edit_id_name.html", owned=owned, form=owned_form, page_title='Create new Owned Type' ) else: owned = Owned( name=request.form["name"] ) db.session.add(owned) db.session.commit() - message="Created new Owned Type (id={})".format(owned.id) + st.SetMessage( "Created new Owned Type (id={})".format(owned.id) ) owneds = Owned.query.order_by('id').all() - return render_template("show_id_name.html", objects=owneds, page_title='Show All Ownership types', url_base='owned', alert=alert, message=message) + return redirect( '/owneds' ) ################################################################################ # /owned/ -> GET/POST(save or delete) -> shows/edits/delets a single @@ -65,25 +63,22 @@ def new_owned(): ################################################################################ @app.route("/owned/", methods=["GET", "POST"]) def owned(id): - alert="success" ### DDP: should this be request.form or request.values? owned_form = OwnedForm(request.form) if request.method == 'POST' and owned_form.validate(): owned = Owned.query.get(id) if 'delete' in request.form: - message="Successfully deleted (id={}, name={})".format( owned.id, owned.name ) + st.SetMessage("Successfully deleted (id={}, name={})".format( owned.id, owned.name ) ) owned = Owned.query.filter(Owned.id==id).delete() if 'submit' in request.form: owned.name = request.form['name'] - message="Successfully Updated Owned (id={})".format(id) + st.SetMessage("Successfully Updated Owned (id={})".format(id) ) db.session.commit() owneds = Owned.query.order_by('id').all() - return render_template("show_id_name.html", objects=owneds, page_title='Show All Ownership types', url_base='owned', alert=alert, message=message) + return redirect( '/owneds' ) else: owned = Owned.query.get(id) owned_form = OwnedForm(request.values, obj=owned) - message="" - return render_template("edit_id_name.html", owned=owned, alert=alert, message=message, form=owned_form, page_title='Edit Owned Type' ) - + return render_template("edit_id_name.html", owned=owned, form=owned_form, page_title='Edit Owned Type' ) def GetOwnedById(id): return Owned.query.get(id).name diff --git a/templates/show_id_name.html b/templates/show_id_name.html index 6f4764e..04a458a 100644 --- a/templates/show_id_name.html +++ b/templates/show_id_name.html @@ -5,6 +5,7 @@ {% if message|length %}
{{message}} + {{ ClearStatus() }}
{% endif %}