This repository has been archived on 2026-05-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
imagerepo/app/__init__.py
T
2025-08-03 15:16:02 -04:00

47 lines
1.4 KiB
Python

# app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
db = SQLAlchemy()
migrate = Migrate()
login_manager = LoginManager()
def create_app(config_class='config.Config'):
app = Flask(__name__)
app.config.from_object(config_class)
db.init_app(app)
migrate.init_app(app, db)
login_manager.init_app(app)
login_manager.login_view = 'auth.login'
with app.app_context():
# Enable connection ping only for PostgreSQL
if app.config['SQLALCHEMY_DATABASE_URI'].startswith("postgresql"):
from sqlalchemy import event, text
from sqlalchemy.exc import DisconnectionError
@event.listens_for(db.engine, "engine_connect")
def ping_connection(connection, branch):
if branch:
return
try:
connection.execution_options(isolation_level="AUTOCOMMIT").scalar(text("SELECT 1"))
except:
raise DisconnectionError()
from app.main import main
from app.auth import auth
app.register_blueprint(main)
app.register_blueprint(auth)
@app.template_filter('datetimeformat')
def datetimeformat(value, format="%Y-%m-%d"):
return value.strftime(format) if value else ""
return app