From b2ccce9e9f311d28a661821fec1c3fb2fd8408de Mon Sep 17 00:00:00 2001 From: edo-neo Date: Wed, 3 Sep 2025 13:52:45 +0200 Subject: [PATCH] refactor label printer configuration handling and add fallback safety for missing components --- src/lib/helpers/recipe_manager.py | 2 +- src/ui/recipe_selection/recipe_selection.py | 13 +++++++++---- src/ui/test/test.py | 4 ++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/lib/helpers/recipe_manager.py b/src/lib/helpers/recipe_manager.py index 44289db..7d044e0 100644 --- a/src/lib/helpers/recipe_manager.py +++ b/src/lib/helpers/recipe_manager.py @@ -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", "")), }, } diff --git a/src/ui/recipe_selection/recipe_selection.py b/src/ui/recipe_selection/recipe_selection.py index 7b083c5..bdcaa44 100755 --- a/src/ui/recipe_selection/recipe_selection.py +++ b/src/ui/recipe_selection/recipe_selection.py @@ -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 = [] diff --git a/src/ui/test/test.py b/src/ui/test/test.py index 20bb643..0f77727 100755 --- a/src/ui/test/test.py +++ b/src/ui/test/test.py @@ -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: