From fe0c4a8e08f1179d72d8b16009e5e703dcff2d26 Mon Sep 17 00:00:00 2001 From: TheMockTv Date: Sat, 5 Sep 2026 18:31:07 +0200 Subject: [PATCH] Im Pruflauf geht kein PDF-Betrachter mehr auf Sein Fund: "wenn du testest, dann mach den tab auch zu". Ein Lauf ueber die Pruefkette schreibt Dutzende Rechnungen, und nach jeder oeffnete das Programm den Betrachter - am Ende klickt der Mensch am Rechner dreissig Fenster weg, die er nie aufgemacht hat. Geoeffnet wird jetzt nur noch an EINER Stelle (_oeffne_datei), und die haelt im Testlauf still und meldet stattdessen, was zu sehen gewesen waere. Die zweite Stelle, die frueher direkt os.startfile rief, geht ebenfalls darueber. pruef_vorschau prueft jetzt den zurueckgegebenen Pfad - und dass wirklich nichts aufgemacht wurde. Alle 14 Pruefstaende gruen. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax --- app.py | 12 +++++++++++- pruef_vorschau.py | 11 ++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app.py b/app.py index f135492..474ef43 100644 --- a/app.py +++ b/app.py @@ -1263,7 +1263,7 @@ class RechnungsApp(ThemeMixin, KorrekturMixin, EinstellungenMixin, tk.Tk): pdf_renderer.render_rechnung(pfad, self.cfg, r, kopf, vorschau=True) print(f"[vorschau] geschrieben -> {pfad}") if oeffnen: - os.startfile(pfad) # noqa: S606 + self._oeffne_datei(pfad) return pfad except OSError as e: messagebox.showerror("Vorschau nicht möglich", @@ -1614,6 +1614,16 @@ class RechnungsApp(ThemeMixin, KorrekturMixin, EinstellungenMixin, tk.Tk): def _oeffne_datei(self, pfad): + """Datei oder Ordner im Betrachter oeffnen. Im Pruflauf: NICHT. + + Ein Pruefstand schreibt Dutzende Rechnungen. Wuerde jede davon den + PDF-Betrachter aufmachen, hat der Mensch am Rechner am Ende dreissig + Fenster offen, die er selbst wegklicken darf. Gemeldet wird es trotzdem, + damit im Protokoll steht, was zu sehen gewesen waere. + """ + if TESTLAUF: + print(f"[oeffnen] im Pruflauf nicht geoeffnet: {pfad}") + return False try: if sys.platform.startswith("win"): os.startfile(pfad) # noqa: S606 diff --git a/pruef_vorschau.py b/pruef_vorschau.py index 374c1a6..fa615e7 100644 --- a/pruef_vorschau.py +++ b/pruef_vorschau.py @@ -61,8 +61,9 @@ def pruefe(bedingung, text): messagebox.showinfo = messagebox.showwarning = messagebox.showerror = lambda *a, **k: None messagebox.askyesno = lambda *a, **k: True -# Die Vorschau oeffnet den PDF-Betrachter - im Pruefstand wird nur gemerkt, WAS -# sie oeffnen wollte. +# Im Pruflauf oeffnet das Programm nichts mehr (sonst stehen nach einem Lauf +# dreissig PDF-Fenster offen). Geprueft wird der Pfad, den die Vorschau +# zurueckgibt - und dass wirklich NICHTS aufgemacht wurde. geoeffnet = [] A.os.startfile = lambda p, *a, **k: geoeffnet.append(p) @@ -81,10 +82,10 @@ f.update() nummer_vorher = f.r_nummer.get() zaehler_vorher = f.cfg.get("rechnung_zaehler") -f.vorschau_zeigen() +pfad = f.vorschau_zeigen() -pruefe(len(geoeffnet) == 1, f"Vorschau oeffnet genau ein Blatt ({len(geoeffnet)})") -pfad = geoeffnet[0] if geoeffnet else "" +pruefe(bool(pfad), f"die Vorschau nennt ihr Blatt ({os.path.basename(str(pfad))})") +pruefe(not geoeffnet, f"im Pruflauf wird KEIN Betrachter aufgemacht ({geoeffnet})") pruefe(os.path.exists(pfad), "Vorschau-PDF wurde geschrieben") pruefe(os.path.abspath(ordner) not in os.path.abspath(pfad), "Vorschau liegt NICHT im Rechnungsordner")