dbdbb77daf
Struttura monorepo completa con server FastAPI e client Flask: - Server: FastAPI + SQLAlchemy 2.0 async + Alembic migrations - Client: Flask + blueprints (auth, measure, maker, statistics) - Database: docker-compose MySQL 8.0 + Alembic async config - Config: pydantic-settings, TailwindCSS, Flask-Babel i18n - Piano implementazione completo (18 sezioni, 1600 righe) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
"""MeasurementTec blueprint - recipe selection and measurement execution."""
|
|
from flask import Blueprint, render_template, session, redirect, url_for
|
|
|
|
measure_bp = Blueprint("measure", __name__)
|
|
|
|
|
|
@measure_bp.route("/select")
|
|
def select_recipe():
|
|
"""Recipe selection page."""
|
|
if "user" not in session:
|
|
return redirect(url_for("auth.login"))
|
|
return render_template("measure/select_recipe.html")
|
|
|
|
|
|
@measure_bp.route("/tasks/<int:recipe_id>")
|
|
def task_list(recipe_id: int):
|
|
"""Task list for selected recipe."""
|
|
if "user" not in session:
|
|
return redirect(url_for("auth.login"))
|
|
return render_template("measure/task_list.html", recipe_id=recipe_id)
|
|
|
|
|
|
@measure_bp.route("/execute/<int:task_id>")
|
|
def task_execute(task_id: int):
|
|
"""Execute measurements for a task."""
|
|
if "user" not in session:
|
|
return redirect(url_for("auth.login"))
|
|
return render_template("measure/task_execute.html", task_id=task_id)
|
|
|
|
|
|
@measure_bp.route("/complete/<int:recipe_id>")
|
|
def task_complete(recipe_id: int):
|
|
"""Task completion summary."""
|
|
if "user" not in session:
|
|
return redirect(url_for("auth.login"))
|
|
return render_template("measure/task_complete.html", recipe_id=recipe_id)
|