Initial commit: aplicatie de cantarire si etichetare
Aplicatie Flask + SQLite pentru productie alimentara: cantarirea componentelor unui produs finit si tiparirea etichetei prin QZ Tray. - produse finite (retete) formate din componente cantarite - designer vizual de etichete (mm/px, zona sigura, campuri variabile, cod QR cu continut din mai multe bucati) - legare produs finit -> sablon de eticheta - navigare pe doua taburi: Cantarire / Setari - administrare: componente, produse finite, sabloane, campuri, istoric - backup, resetare baza de date, checklist de pregatire, /healthz - CLI de administrare si serviciu systemd pentru productie - vendor/syncpulse-scale-bridge (GPL-3.0-or-later) pentru citirea cantarului
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""Pagina de printare a unei etichete de produs finit."""
|
||||
from __future__ import annotations
|
||||
|
||||
from flask import Blueprint, abort, current_app, render_template, request
|
||||
|
||||
from ..db import all_settings, get_setting
|
||||
from ..labels import LabelTemplateError, print_payload
|
||||
from ..repositories import get_default_template, get_package, get_recipe, get_template
|
||||
|
||||
bp = Blueprint("printing", __name__)
|
||||
|
||||
|
||||
@bp.get("/labels/<int:package_id>/print")
|
||||
def print_label(package_id: int):
|
||||
package = get_package(package_id)
|
||||
if package is None:
|
||||
abort(404)
|
||||
|
||||
template_id = request.args.get("template_id") or package.get("template_id")
|
||||
configured = get_setting("default_template_id", "")
|
||||
template = None
|
||||
if template_id:
|
||||
try:
|
||||
template = get_template(int(template_id))
|
||||
except (TypeError, ValueError):
|
||||
template = None
|
||||
if template is None and configured.isdigit():
|
||||
template = get_template(int(configured))
|
||||
template = template or get_default_template()
|
||||
if template is None:
|
||||
abort(409, "Nu exista niciun sablon de eticheta configurat.")
|
||||
|
||||
recipe = get_recipe(package["recipe_id"]) if package["recipe_id"] else None
|
||||
try:
|
||||
payload = print_payload(package, template, all_settings(), recipe)
|
||||
except LabelTemplateError as exc:
|
||||
abort(500, str(exc))
|
||||
|
||||
settings = all_settings()
|
||||
auto = request.args.get("auto")
|
||||
if auto is None:
|
||||
auto = settings.get("auto_print", "1") == "1" and current_app.config["AUTO_PRINT"]
|
||||
else:
|
||||
auto = auto not in {"0", "false", "no"}
|
||||
|
||||
return render_template("label_print.html", payload=payload, auto=bool(auto), preview=False)
|
||||
Reference in New Issue
Block a user