| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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!')
|