__init__.py 891 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import json
  2. import logging
  3. import sys
  4. from pathlib import Path
  5. from flask import Flask
  6. from flask_migrate import Migrate
  7. from flask_sqlalchemy import SQLAlchemy
  8. from sqlalchemy.engine import Engine
  9. from sqlalchemy import event
  10. print('- Loading settings')
  11. with open('settings.json') as file:
  12. settings = json.load(file)
  13. app = Flask(__name__)
  14. if "unittest" in sys.modules:
  15. # creates an in-memory DB
  16. db_file = ""
  17. app.logger.setLevel(logging.CRITICAL)
  18. else:
  19. db_file = Path.cwd() / settings['database']
  20. app.config["SQLALCHEMY_DATABASE_URI"] = f"sqlite:///{db_file}"
  21. app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
  22. @event.listens_for(Engine, "connect")
  23. def set_sqlite_pragma(dbapi_connection, connection_record):
  24. cursor = dbapi_connection.cursor()
  25. cursor.execute("PRAGMA foreign_keys=ON")
  26. cursor.close()
  27. db = SQLAlchemy(app)
  28. migrate = Migrate(app, db)