from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager # Flask Login from os import path # Talisman from flask_talisman import Talisman # Stripe import stripe db = SQLAlchemy() DB_NAME = "database.db" def create_app(): app = Flask(__name__) app.config['SECRET_KEY'] = 'Th15_iS-M1!S3cre4' # used to encrypt session cookies app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_NAME}' db.init_app(app) # import blueprints from .accounts import accounts from .dashboards import dashboards # register blueprints app.register_blueprint(accounts, url_prefix = '/') # allows the setting of prefixes for pages app.register_blueprint(dashboards, url_prefix = '/') # import Database models from .models import User create_database(app) login_manager = LoginManager() # redirect here if not logged in login_manager.login_view = 'accounts.login' login_manager.init_app(app) # Cookie Protections app.config.update( SESSION_COOKIE_SECURE=True, SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE='Lax', ) @login_manager.user_loader # tells flask how to load a user from the db def load_user(id): return User.query.get(int(id)) # by default get() looks for the primary key # Talisman Talisman(app) # Stripe stripe_keys = { "secret_key" : "sk_test_51KmKkAF0esudExGd5hSSlMUzVEyxK49zfmSlhhU0rHsVCQoSTkIyXalqLe1pUgDmpbLVU4huIuDeDzPOCXp2gFJB00n7X7PMf9", "publishable_key" : "pk_test_51KmKkAF0esudExGdIscDaqn3Q4Sr5YJAu8X1yhjFerNe90HYgyjkk0tzakICpWyV8jE78m43ME2gSp2CXKg2L14I00wFIb0tQW" } stripe.api_key = stripe_keys['secret_key'] return app def create_database(app): if not path.exists('app/' + DB_NAME): db.create_all(app=app) print('Created Database!')