web-dev/labs/lab-6/app/app.py
2026-03-13 13:14:58 +03:00

39 lines
1.1 KiB
Python

from flask import Flask, render_template, send_from_directory
from flask_migrate import Migrate
from sqlalchemy.exc import SQLAlchemyError
from models import db, Category, Image
from auth import bp as auth_bp, init_login_manager
from courses import bp as courses_bp
app = Flask(__name__)
application = app
app.config.from_pyfile('config.py')
db.init_app(app)
migrate = Migrate(app, db)
init_login_manager(app)
@app.errorhandler(SQLAlchemyError)
def handle_sqlalchemy_error(err):
error_msg = ('Возникла ошибка при подключении к базе данных. '
'Повторите попытку позже.')
return f'{error_msg} (Подробнее: {err})', 500
app.register_blueprint(auth_bp)
app.register_blueprint(courses_bp)
@app.route('/')
def index():
categories = db.session.execute(db.select(Category)).scalars()
return render_template(
'index.html',
categories=categories,
)
@app.route('/images/<image_id>')
def image(image_id):
img = db.get_or_404(Image, image_id)
return send_from_directory(app.config['UPLOAD_FOLDER'],
img.storage_filename)