__init__.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from flask import Flask
  2. from flask_sqlalchemy import SQLAlchemy
  3. from flask_login import LoginManager # Flask Login
  4. from os import path
  5. # Talisman
  6. from flask_talisman import Talisman
  7. # Stripe
  8. import stripe
  9. db = SQLAlchemy()
  10. DB_NAME = "database.db"
  11. def create_app():
  12. app = Flask(__name__)
  13. app.config['SECRET_KEY'] = 'Th15_iS-M1!S3cre4' # used to encrypt session cookies
  14. app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_NAME}'
  15. db.init_app(app)
  16. # import blueprints
  17. from .accounts import accounts
  18. from .dashboards import dashboards
  19. # register blueprints
  20. app.register_blueprint(accounts, url_prefix = '/') # allows the setting of prefixes for pages
  21. app.register_blueprint(dashboards, url_prefix = '/')
  22. # import Database models
  23. from .models import User
  24. create_database(app)
  25. login_manager = LoginManager()
  26. # redirect here if not logged in
  27. login_manager.login_view = 'accounts.login'
  28. login_manager.init_app(app)
  29. # Cookie Protections
  30. app.config.update(
  31. SESSION_COOKIE_SECURE=True,
  32. SESSION_COOKIE_HTTPONLY=True,
  33. SESSION_COOKIE_SAMESITE='Lax',
  34. )
  35. @login_manager.user_loader
  36. # tells flask how to load a user from the db
  37. def load_user(id):
  38. return User.query.get(int(id)) # by default get() looks for the primary key
  39. # Talisman
  40. Talisman(app)
  41. # Stripe
  42. stripe_keys = {
  43. "secret_key" : "sk_test_51KmKkAF0esudExGd5hSSlMUzVEyxK49zfmSlhhU0rHsVCQoSTkIyXalqLe1pUgDmpbLVU4huIuDeDzPOCXp2gFJB00n7X7PMf9",
  44. "publishable_key" : "pk_test_51KmKkAF0esudExGdIscDaqn3Q4Sr5YJAu8X1yhjFerNe90HYgyjkk0tzakICpWyV8jE78m43ME2gSp2CXKg2L14I00wFIb0tQW"
  45. }
  46. stripe.api_key = stripe_keys['secret_key']
  47. return app
  48. def create_database(app):
  49. if not path.exists('app/' + DB_NAME):
  50. db.create_all(app=app)
  51. print('Created Database!')