Web Programming with Python and JavaScript
DATABASE_URL=postgres://srnwovmyccfpnj:37640f4bf3c4b28f2b3ee99fbbb1d9ffe72cd04a203a8ba98c9ea44520dcf691@ec2-52-6-143-153.compute-1.amazonaws.com:5432/daus1tm2bsv6d2 FLASK_APP=src/application.py FLASK_ENV=development flask run
- application.py
where the application will run
- templates/layout.hmtl
layout of the templates template inheritance
- templates/index.html
starting/ default page
- templates/login.html
page for logging in
- templates/register.html
page to register if user doesen't have an account
-
setting up application.py
importing all necessary libaries etc. and setting the app up
import os import requests from flask import Flask, session, render_template, request, redirect, jsonify from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.exc import SQLAlchemyError app = Flask(__name__) # Check for environment variable if not os.getenv("DATABASE_URL"): raise RuntimeError("DATABASE_URL is not set") # Configure session to use filesystem app.config["SESSION_PERMANENT"] = False app.config["SESSION_TYPE"] = "filesystem" app.config["SECRET_KEY"] = "123456789abcdefghi" # Set up database engine = create_engine(os.getenv("DATABASE_URL")) db = scoped_session(sessionmaker(bind=engine))
- SET UP A heroku DATABASE
- SET UP THE FLASK SERVER CONNECTED TO THE HEROKU DATABASE
- BUILD A BASIC PAGE WITH A LOGIN AND AN OPTION TO REGISTER
- CREATE A USERS TABLE CONTAINING
- AN id
- A username
- A password
- BUILD A REGISTRATION PAGE
- CREATE A BOOKS TABLE CONTAINING
- [x] AN id
- [x] A TITLE
- [x] THE AUTHOR
- [x] THE PUBLICATION YEAR
- [x] THE ISBN NUMBER
- [x] THE REVIEW COUNT
- [x] THE AVERAGE SCORE
- IMPORT books.csv INTO THE DATABASE VIA AN import.py FILE
- BUILD A BASE PAGE WITH A NAVBAR CONTAINING A SEARCH PAGE LINK AND A LOGOUT OPTION
- BUILD A SEARCH PAGE WHICH SEARCHES BOOKS BY ISBN, AUTHOR NAME, OR TITLE
- [x] CREATE A REVIEW TABLE CONTAINING
- [x] AN id
- [x] A SCORE
- [x] A TEXT REVIEW
- [x] A RELATION TO THE USER_ID
- [x] A RELATION TO THE BOOK
- BUILD A BOOK PAGE ON WHICH A REVIEW CAN BE SUBMITTED CONTAINING
- A RATING SCALE FROM 1 TO 5
- A TEXT COMPONENT FOR AN OPINION
- USERS SHOULD NOT BE ABLE TO SUBMIT MULTIPLE REVIEWS
- THE BOOK PAGE ALSO DISPLAYS THE AVAILABLE AVERAGE RATING AND NUMBER OF RATINGS FROM GOODREADS
- BUILD A
/api/<isbn>
WHERE IS THE ISBN OF THE BOOK RESULTING IN A JSON WITH- THE TITLE
- THE AUTHOR
- THE PUBLISHING YEAR
- THE ISBN
- THE REVIEW COUNT
- AND THE AVERAGE SCORE
- IF THE ISBN IS NOT IN THE DATABASE, THE PAGE SHOULD SHOW A 404 Error
- RAW SQL COMMANDS
- ALL ADDITIONAL PYTHON PACKAGES SHOULD BE CONTAINED WITHIN THE requirements.txt FILE