__init__.py 1.4 KB

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