from flask import Flask, send_from_directory, url_for from flask_login import LoginManager from models import db from models import User from auth import auth_bp from admin import admin_bp from lists import lists_bp from items import items_bp from api import api_bp from groups import groups_bp from secrets_config import load_secrets login_manager = LoginManager() def create_app(): app = Flask(__name__, instance_relative_config=True) secret_values = load_secrets(app.instance_path) app.config["SECRET_KEY"] = secret_values["runtime"]["secret_key"] app.config["APPLICATION_KEY"] = secret_values["runtime"]["application_key"] app.config["SQLALCHEMY_DATABASE_URI"] = secret_values["runtime"]["database_uri"] db.init_app(app) login_manager.init_app(app) login_manager.login_view = "auth.login" app.register_blueprint(auth_bp) app.register_blueprint(admin_bp) app.register_blueprint(lists_bp) app.register_blueprint(items_bp) app.register_blueprint(api_bp) app.register_blueprint(groups_bp) with app.app_context(): db.create_all() @login_manager.user_loader def load_user(user_id): # Return User.query.get(int(user_id)) return db.get_or_404(User, int(user_id)) return app if __name__ == "__main__": my_app = create_app() # if needed - initialize data my_app.run(debug=True, host='127.0.0.1', port=5001)