__init__.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. """
  2. Initialize the modules needed for the website
  3. """
  4. import os
  5. from flask import Flask
  6. from flask_sqlalchemy import SQLAlchemy
  7. from flask_migrate import Migrate
  8. from flask_login import LoginManager
  9. from flask_compress import Compress
  10. from flask_argon2 import Argon2
  11. from flask_menu import Menu
  12. from dotenv import load_dotenv
  13. load_dotenv()
  14. class Config(object):
  15. """Flask configuration"""
  16. UPLOAD_FOLDER = 'app/static/uploads'
  17. SCHEDULER_API_ENABLED = True
  18. SQLALCHEMY_DATABASE_URI = os.environ["DATABASE_URI"]
  19. SECRET_KEY = os.environ["SECRET_KEY"]
  20. SQLALCHEMY_TRACK_MODIFICATIONS = False
  21. SEND_FILE_MAX_AGE_DEFAULT = 1296000
  22. app = Flask(__name__)
  23. app.config.from_object(Config())
  24. app.jinja_env.lstrip_blocks = True
  25. app.jinja_env.trim_blocks = True
  26. # Compress settings
  27. COMPRESS_MIMETYPES = [
  28. 'text/html',
  29. 'text/css',
  30. 'text/xml',
  31. 'application/json',
  32. 'application/javascript'
  33. ]
  34. COMPRESS_LEVEL = 6
  35. COMPRESS_MIN_SIZE = 500
  36. Compress(app)
  37. Menu(app=app)
  38. db = SQLAlchemy(app)
  39. migrate = Migrate(app, db)
  40. argon2 = Argon2(app)
  41. # Login
  42. login_manager = LoginManager()
  43. login_manager.init_app(app)
  44. login_manager.login_view = "auth.login"
  45. login_manager.login_message_category = "warning"