diff --git a/project.py b/project.py index 0c329b4e..8ce7c47d 100644 --- a/project.py +++ b/project.py @@ -1,12 +1,12 @@ -from flask import Flask, render_template, request, redirect,jsonify, url_for, flash -app = Flask(__name__) - +from flask import Flask, render_template, request, redirect +from flask import jsonify, url_for, flash from sqlalchemy import create_engine, asc from sqlalchemy.orm import sessionmaker from database_setup import Base, Restaurant, MenuItem -#Connect to Database and create database session +app = Flask(__name__) +# Connect to Database and create database session engine = create_engine('sqlite:///restaurantmenu.db') Base.metadata.bind = engine @@ -14,98 +14,118 @@ session = DBSession() -#JSON APIs to view Restaurant Information +# JSON APIs to view Restaurant Information @app.route('/restaurant//menu/JSON') def restaurantMenuJSON(restaurant_id): - restaurant = session.query(Restaurant).filter_by(id = restaurant_id).one() - items = session.query(MenuItem).filter_by(restaurant_id = restaurant_id).all() + restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one() + item = session.query(MenuItem).filter_by( + restaurant_id=restaurant_id).all() return jsonify(MenuItems=[i.serialize for i in items]) @app.route('/restaurant//menu//JSON') def menuItemJSON(restaurant_id, menu_id): - Menu_Item = session.query(MenuItem).filter_by(id = menu_id).one() - return jsonify(Menu_Item = Menu_Item.serialize) + Menu_Item = session.query(MenuItem).filter_by(id=menu_id).one() + return jsonify(Menu_Item=Menu_Item.serialize) + @app.route('/restaurant/JSON') def restaurantsJSON(): restaurants = session.query(Restaurant).all() - return jsonify(restaurants= [r.serialize for r in restaurants]) + return jsonify(restaurants=[r.serialize for r in restaurants]) -#Show all restaurants +# Show all restaurants @app.route('/') @app.route('/restaurant/') def showRestaurants(): - restaurants = session.query(Restaurant).order_by(asc(Restaurant.name)) - return render_template('restaurants.html', restaurants = restaurants) + restaurants = session.query(Restaurant).order_by(asc(Restaurant.name)) + return render_template('restaurants.html', restaurants=restaurants) -#Create a new restaurant -@app.route('/restaurant/new/', methods=['GET','POST']) + +# Create a new restaurant +@app.route('/restaurant/new/', methods=['GET', 'POST']) def newRestaurant(): - if request.method == 'POST': - newRestaurant = Restaurant(name = request.form['name']) - session.add(newRestaurant) - flash('New Restaurant %s Successfully Created' % newRestaurant.name) - session.commit() - return redirect(url_for('showRestaurants')) - else: - return render_template('newRestaurant.html') - -#Edit a restaurant -@app.route('/restaurant//edit/', methods = ['GET', 'POST']) -def editRestaurant(restaurant_id): - editedRestaurant = session.query(Restaurant).filter_by(id = restaurant_id).one() - if request.method == 'POST': - if request.form['name']: - editedRestaurant.name = request.form['name'] - flash('Restaurant Successfully Edited %s' % editedRestaurant.name) + if request.method == 'POST': + newRestaurant = Restaurant(name=request.form['name']) + session.add(newRestaurant) + flash('New Restaurant %s Successfully Created' % newRestaurant.name) + session.commit() return redirect(url_for('showRestaurants')) - else: - return render_template('editRestaurant.html', restaurant = editedRestaurant) + else: + return render_template('newRestaurant.html') + + +# Edit a restaurant +@app.route('/restaurant//edit/', methods=['GET', 'POST']) +def editRestaurant(restaurant_id): + editedRestaurant = session.query(Restaurant).filter_by( + id=restaurant_id).one() + if request.method == 'POST': + if request.form['name']: + editedRestaurant.name = request.form['name'] + flash('Restaurant Successfully Edited %s' % editedRestaurant.name) + return redirect(url_for('showRestaurants')) + else: + return render_template( + 'editRestaurant.html', + restaurant=editedRestaurant) -#Delete a restaurant -@app.route('/restaurant//delete/', methods = ['GET','POST']) +# Delete a restaurant +@app.route('/restaurant//delete/', methods=['GET', 'POST']) def deleteRestaurant(restaurant_id): - restaurantToDelete = session.query(Restaurant).filter_by(id = restaurant_id).one() - if request.method == 'POST': - session.delete(restaurantToDelete) - flash('%s Successfully Deleted' % restaurantToDelete.name) - session.commit() - return redirect(url_for('showRestaurants', restaurant_id = restaurant_id)) - else: - return render_template('deleteRestaurant.html',restaurant = restaurantToDelete) - -#Show a restaurant menu + restaurantToDelete = session.query(Restaurant).filter_by( + id=restaurant_id).one() + if request.method == 'POST': + session.delete(restaurantToDelete) + flash('%s Successfully Deleted' % restaurantToDelete.name) + session.commit() + return redirect(url_for( + 'showRestaurants', restaurant_id=restaurant_id)) + else: + return render_template( + 'deleteRestaurant.html', restaurant=restaurantToDelete) + + +# Show a restaurant menu @app.route('/restaurant//') @app.route('/restaurant//menu/') def showMenu(restaurant_id): - restaurant = session.query(Restaurant).filter_by(id = restaurant_id).one() - items = session.query(MenuItem).filter_by(restaurant_id = restaurant_id).all() - return render_template('menu.html', items = items, restaurant = restaurant) - + restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one() + items = session.query(MenuItem).filter_by( + restaurant_id=restaurant_id).all() + return render_template('menu.html', items=items, restaurant=restaurant) -#Create a new menu item -@app.route('/restaurant//menu/new/',methods=['GET','POST']) +# Create a new menu item +@app.route( + '/restaurant//menu/new/', + methods=['GET', 'POST']) def newMenuItem(restaurant_id): - restaurant = session.query(Restaurant).filter_by(id = restaurant_id).one() - if request.method == 'POST': - newItem = MenuItem(name = request.form['name'], description = request.form['description'], price = request.form['price'], course = request.form['course'], restaurant_id = restaurant_id) - session.add(newItem) - session.commit() - flash('New Menu %s Item Successfully Created' % (newItem.name)) - return redirect(url_for('showMenu', restaurant_id = restaurant_id)) - else: - return render_template('newmenuitem.html', restaurant_id = restaurant_id) - -#Edit a menu item -@app.route('/restaurant//menu//edit', methods=['GET','POST']) + restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one() + if request.method == 'POST': + newItem = MenuItem(name=request.form['name'], + description=request.form['description'], + price=request.form['price'], + course=request.form['course'], + restaurant_id=restaurant_id) + session.add(newItem) + session.commit() + flash('New Menu %s Item Successfully Created' % (newItem.name)) + return redirect(url_for('showMenu', restaurant_id=restaurant_id)) + else: + return render_template('newmenuitem.html', restaurant_id=restaurant_id) + + +# Edit a menu item +@app.route( + '/restaurant//menu//edit', + methods=['GET', 'POST']) def editMenuItem(restaurant_id, menu_id): - editedItem = session.query(MenuItem).filter_by(id = menu_id).one() - restaurant = session.query(Restaurant).filter_by(id = restaurant_id).one() + editedItem = session.query(MenuItem).filter_by(id=menu_id).one() + restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one() if request.method == 'POST': if request.form['name']: editedItem.name = request.form['name'] @@ -116,30 +136,34 @@ def editMenuItem(restaurant_id, menu_id): if request.form['course']: editedItem.course = request.form['course'] session.add(editedItem) - session.commit() + session.commit() flash('Menu Item Successfully Edited') - return redirect(url_for('showMenu', restaurant_id = restaurant_id)) + return redirect(url_for('showMenu', restaurant_id=restaurant_id)) else: - return render_template('editmenuitem.html', restaurant_id = restaurant_id, menu_id = menu_id, item = editedItem) - - -#Delete a menu item -@app.route('/restaurant//menu//delete', methods = ['GET','POST']) -def deleteMenuItem(restaurant_id,menu_id): - restaurant = session.query(Restaurant).filter_by(id = restaurant_id).one() - itemToDelete = session.query(MenuItem).filter_by(id = menu_id).one() + return render_template( + 'editmenuitem.html', + restaurant_id=restaurant_id, + menu_id=menu_id, + item=editedItem) + + +# Delete a menu item +@app.route( + '/restaurant//menu//delete', + methods=['GET', 'POST']) +def deleteMenuItem(restaurant_id, menu_id): + restaurant = session.query(Restaurant).filter_by(id=restaurant_id).one() + itemToDelete = session.query(MenuItem).filter_by(id=menu_id).one() if request.method == 'POST': session.delete(itemToDelete) session.commit() flash('Menu Item Successfully Deleted') - return redirect(url_for('showMenu', restaurant_id = restaurant_id)) + return redirect(url_for('showMenu', restaurant_id=restaurant_id)) else: - return render_template('deleteMenuItem.html', item = itemToDelete) - - + return render_template('deleteMenuItem.html', item=itemToDelete) if __name__ == '__main__': - app.secret_key = 'super_secret_key' - app.debug = True - app.run(host = '0.0.0.0', port = 5000) + app.secret_key = 'super_secret_key' + app.debug = True + app.run(host='0.0.0.0', port=5000)