diff --git a/labconnect/__init__.py b/labconnect/__init__.py index bda4b26..20f8b19 100644 --- a/labconnect/__init__.py +++ b/labconnect/__init__.py @@ -1,17 +1,54 @@ import os +import logging # Import Flask modules from flask import Flask -from flask_sqlalchemy import SQLAlchemy -environment = os.environ.get("CONFIG", "config.TestingConfig") +# from flask_sqlalchemy import SQLAlchemy +from flask_wtf.csrf import CSRFProtect -# Create flask app object -app = Flask(__name__) -app.config.from_object(environment) + +csrf_protection = CSRFProtect() # Create Database object # db = SQLAlchemy(app) -# Import all views -import labconnect.views + +def create_app() -> Flask: + # Create flask app object + app = Flask(__name__) + app.config.from_object(os.environ.get("CONFIG", "config.TestingConfig")) + + initialize_extensions(app) + register_blueprints(app) + + return app + + +# ---------------- +# Helper Functions +# ---------------- + + +def initialize_extensions(app) -> None: + # Since the application instance is now created, pass it to each Flask + # extension instance to bind it to the Flask application instance (app) + # db.init_app(app) + csrf_protection.init_app(app) + + # Flask-Login configuration + # from project.models import User + + # @login.user_loader + # def load_user(user_id): + # return User.query.filter(User.id == int(user_id)).first() + + +def register_blueprints(app) -> None: + # Since the application instance is now created, register each Blueprint + # with the Flask application instance (app) + from labconnect.main import main_blueprint + from labconnect.errors import error_blueprint + + app.register_blueprint(main_blueprint) + app.register_blueprint(error_blueprint) diff --git a/labconnect/errors/__init__.py b/labconnect/errors/__init__.py new file mode 100644 index 0000000..05a7ea3 --- /dev/null +++ b/labconnect/errors/__init__.py @@ -0,0 +1,9 @@ +""" +Blueprint for error pages +""" +from flask import Blueprint + + +error_blueprint = Blueprint("errors", __name__, template_folder="templates") + +from . import routes diff --git a/labconnect/errors/routes.py b/labconnect/errors/routes.py new file mode 100644 index 0000000..7235bfc --- /dev/null +++ b/labconnect/errors/routes.py @@ -0,0 +1,15 @@ +from flask import make_response, render_template, Response + +from . import error_blueprint + + +@error_blueprint.errorhandler(404) +def page_not_found(e) -> Response: + # 404 error page + return make_response(render_template("404.html"), 404) + + +@error_blueprint.errorhandler(500) +def error_for_server(e) -> Response: + # 500 error page + return make_response(render_template("500.html"), 500) diff --git a/labconnect/main/__init__.py b/labconnect/main/__init__.py new file mode 100644 index 0000000..bd01e71 --- /dev/null +++ b/labconnect/main/__init__.py @@ -0,0 +1,8 @@ +""" +Blueprint for main pages +""" +from flask import Blueprint + +main_blueprint = Blueprint("main", __name__, template_folder="templates") + +from . import routes diff --git a/labconnect/main/routes.py b/labconnect/main/routes.py new file mode 100644 index 0000000..04e4c87 --- /dev/null +++ b/labconnect/main/routes.py @@ -0,0 +1,9 @@ +from flask import render_template, Response + +from . import main_blueprint + + +@main_blueprint.route("/") +def index(): + # return "Hello World" + return render_template("home.html") diff --git a/labconnect/views.py b/labconnect/views.py deleted file mode 100644 index 40a2320..0000000 --- a/labconnect/views.py +++ /dev/null @@ -1,30 +0,0 @@ -from flask import Response, make_response, redirect, render_template, url_for - -from labconnect import app - -""" -Routes -""" - - -@app.route("/", methods=["GET"]) -def index(): - # return "Hello World" - return render_template("home.html") - - -""" -Error Handlers -""" - - -@app.errorhandler(404) -def page_not_found(e) -> Response: - # 404 error page - return make_response(render_template("404.html"), 404) - - -@app.errorhandler(500) -def error_for_server(e) -> Response: - # 500 error page - return make_response(render_template("500.html"), 500) diff --git a/run.py b/run.py index c869f45..d03f9cc 100644 --- a/run.py +++ b/run.py @@ -1,4 +1,6 @@ -from labconnect import app +from labconnect import create_app + +app = create_app() if __name__ == "__main__": app.run(port=8000)