inventory/inventory/__init__.py

43 lines
1.2 KiB
Python

from flask import Flask, current_app
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.engine.url import make_url
import logging
import os
db = SQLAlchemy()
logger = logging.getLogger('sqlalchemy.engine')
logger.setLevel(logging.INFO)
if not logger.handlers:
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] %(message)s'))
logger.addHandler(handler)
def is_in_memory_sqlite():
uri = current_app.config.get("SQLALCHEMY_DATABASE_URI")
if not uri:
return False
url = make_url(uri)
print(url, url.database)
return url.get_backend_name() == "sqlite" and url.database == ":memory:"
def create_app():
from config import Config
app = Flask(__name__)
app.secret_key = os.getenv('SECRET_KEY', 'dev-secret-key-unsafe') # You know what to do for prod
app.config.from_object(Config)
db.init_app(app)
with app.app_context():
from . import models
if is_in_memory_sqlite():
db.create_all()
from .routes import main
from .routes.images import image_bp
app.register_blueprint(main)
app.register_blueprint(image_bp)
return app