Files
lapp/lapp.py
T

65 lines
1.9 KiB
Python
Raw Normal View History

import os
import secrets
from pathlib import Path
2026-01-03 13:16:43 +01:00
from flask import Flask, send_from_directory, url_for
2026-01-01 21:07:34 +01:00
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
2026-01-18 08:22:41 +01:00
from api import api_bp
2026-05-14 20:51:01 +02:00
from groups import groups_bp
2026-01-01 21:07:34 +01:00
login_manager = LoginManager()
def load_secret(app, env_name, filename):
secret = os.environ.get(env_name)
if secret:
return secret
instance_path = Path(app.instance_path)
instance_path.mkdir(parents=True, exist_ok=True)
secret_path = instance_path / filename
if secret_path.exists():
return secret_path.read_text(encoding="utf-8").strip()
secret = secrets.token_urlsafe(48)
secret_path.write_text(secret, encoding="utf-8")
secret_path.chmod(0o600)
return secret
2026-01-01 21:07:34 +01:00
def create_app():
app = Flask(__name__, instance_relative_config=True)
app.config["SECRET_KEY"] = load_secret(app, "LAPP_SECRET_KEY", "secret_key")
app.config["APPLICATION_KEY"] = load_secret(app, "LAPP_APPLICATION_KEY", "application_key")
app.config["SQLALCHEMY_DATABASE_URI"] = os.environ.get("LAPP_DATABASE_URI", "sqlite:///app.db")
2026-01-01 21:07:34 +01:00
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)
2026-01-18 08:22:41 +01:00
app.register_blueprint(api_bp)
2026-05-14 20:51:01 +02:00
app.register_blueprint(groups_bp)
2026-01-01 21:07:34 +01:00
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
2026-01-18 08:22:41 +01:00
my_app.run(debug=True, host='127.0.0.1', port=5001)