refactor label printer configuration handling and add fallback safety for missing components

This commit is contained in:
edo-neo 2025-09-03 13:52:45 +02:00
parent 2f423f4281
commit b2ccce9e9f
3 changed files with 14 additions and 5 deletions

View File

@ -145,7 +145,7 @@ def read_steps(row, config, defaults=None, unsupported_steps=None):
"labeltxt_5": row.get("barcode_input_finelinea", ""),
"extra_label": row.get("etichette_supplementari", ""),
"barcode": row.get("barcode_stampato",defaults["barcode_format"]),
"printer_selection": row.get("printer_selection", config.get("label_printer", {}).get("printer", "")),
"printer_selection": row.get("printer_selection", (config.get("label_printer", {}) or {}).get("printer", "")),
},
}

View File

@ -62,10 +62,15 @@ class Recipe_Selection(Widget):
}
filters = {"archived": False}
step_defaults = self.read_steps(self.config.get("recipes_defaults", noner), noner)
if self.config["label_printer"]["risoluzione"] == "300":
lp_cfg = self.config.get("label_printer", {}) or {}
try:
ris = int(str(lp_cfg.get("risoluzione", "300")).strip())
except Exception:
ris = 300
if ris == 300:
custom_label_folder = f"config/label_templates/{str(self.config.machine_id)}/300/"
standard_label_folder = f"config/label_templates/300/"
elif self.config["label_printer"]["risoluzione"] == "203":
else:
custom_label_folder = f"config/label_templates/{str(self.config.machine_id)}/203/"
standard_label_folder = f"config/label_templates/203/"
@ -86,8 +91,8 @@ class Recipe_Selection(Widget):
templates_300 = sorted(map(os.path.basename, glob(f"{label_folder_300}*.prn")))
# Available printers from both sections (only 'printer' key) and mapping to resolution
lp1 = self.config.get("label_printer", {})
lp2 = self.config.get("label_printer_2", {})
lp1 = self.config.get("label_printer", {}) or {}
lp2 = self.config.get("label_printer_2", {}) or {}
lp1_p = lp1.get("printer", "")
lp2_p = lp2.get("printer", "")
printers_list = []

View File

@ -998,6 +998,10 @@ class Test(Widget):
lp2_printer = lp2_cfg.get("printer", "")
use_comp_name = "label_printer_2" if selected_printer and lp2_printer and selected_printer == lp2_printer else "label_printer"
comp = self.components.get(use_comp_name) or self.components.get("label_printer") or self.components.get("label_printer_2")
if comp is None:
# No printer component available; log and skip printing safely
self.log.warning("No label printer component available; skipping label print.")
return context
# Set the target device name to selected printer if provided
if selected_printer:
try: