task editor: liste Tipo/Unita e tolleranze generali dalle Impostazioni (#47, #48)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-07 12:37:14 +02:00
parent c8dd5eecfd
commit dffb11f9f2
3 changed files with 294 additions and 21 deletions
+38 -1
View File
@@ -1,4 +1,7 @@
"""Maker blueprint - recipe creation and editing."""
import json
import math
import requests as http_requests
from flask import Blueprint, flash, jsonify, redirect, render_template, request, session, url_for
@@ -118,7 +121,41 @@ def task_editor(recipe_id: int):
else:
recipe["tasks"] = []
return render_template("maker/task_editor.html", recipe=recipe)
# #47/#48: liste e tolleranze generali dalle Impostazioni; chiave assente,
# vuota o non valida -> None -> il template usa le voci scritte a mano
settings = api_client.get("/api/settings")
if not isinstance(settings, dict) or settings.get("error"):
settings = {}
return render_template(
"maker/task_editor.html",
recipe=recipe,
list_measurement_types=_settings_string_list(settings.get("list_measurement_types")),
list_units=_settings_string_list(settings.get("list_units")),
general_tolerance_plus=_settings_tolerance(settings.get("general_tolerance_plus")),
general_tolerance_minus=_settings_tolerance(settings.get("general_tolerance_minus")),
)
def _settings_string_list(value):
"""#47: array JSON di stringhe non vuote dalle Impostazioni, altrimenti None."""
try:
items = json.loads(value) if isinstance(value, str) else None
except ValueError:
return None
if not isinstance(items, list):
return None
items = [i.strip() for i in items if isinstance(i, str) and i.strip()]
return items or None
def _settings_tolerance(value):
"""#48: tolleranza generale (decimale >= 0) dalle Impostazioni, altrimenti None."""
try:
number = float(str(value).strip())
except ValueError:
return None
return number if math.isfinite(number) and number >= 0 else None
@maker_bp.route("/recipes/<int:recipe_id>/tasks/<int:task_id>/drawing")