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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V4t48uxDok5rJXhC9bX1Ax
This commit is contained in:
parent
4cf46e9932
commit
fe0c4a8e08
2 changed files with 17 additions and 6 deletions
12
app.py
12
app.py
|
|
@ -1263,7 +1263,7 @@ class RechnungsApp(ThemeMixin, KorrekturMixin, EinstellungenMixin, tk.Tk):
|
||||||
pdf_renderer.render_rechnung(pfad, self.cfg, r, kopf, vorschau=True)
|
pdf_renderer.render_rechnung(pfad, self.cfg, r, kopf, vorschau=True)
|
||||||
print(f"[vorschau] geschrieben -> {pfad}")
|
print(f"[vorschau] geschrieben -> {pfad}")
|
||||||
if oeffnen:
|
if oeffnen:
|
||||||
os.startfile(pfad) # noqa: S606
|
self._oeffne_datei(pfad)
|
||||||
return pfad
|
return pfad
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
messagebox.showerror("Vorschau nicht möglich",
|
messagebox.showerror("Vorschau nicht möglich",
|
||||||
|
|
@ -1614,6 +1614,16 @@ class RechnungsApp(ThemeMixin, KorrekturMixin, EinstellungenMixin, tk.Tk):
|
||||||
|
|
||||||
|
|
||||||
def _oeffne_datei(self, pfad):
|
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:
|
try:
|
||||||
if sys.platform.startswith("win"):
|
if sys.platform.startswith("win"):
|
||||||
os.startfile(pfad) # noqa: S606
|
os.startfile(pfad) # noqa: S606
|
||||||
|
|
|
||||||
|
|
@ -61,8 +61,9 @@ def pruefe(bedingung, text):
|
||||||
messagebox.showinfo = messagebox.showwarning = messagebox.showerror = lambda *a, **k: None
|
messagebox.showinfo = messagebox.showwarning = messagebox.showerror = lambda *a, **k: None
|
||||||
messagebox.askyesno = lambda *a, **k: True
|
messagebox.askyesno = lambda *a, **k: True
|
||||||
|
|
||||||
# Die Vorschau oeffnet den PDF-Betrachter - im Pruefstand wird nur gemerkt, WAS
|
# Im Pruflauf oeffnet das Programm nichts mehr (sonst stehen nach einem Lauf
|
||||||
# sie oeffnen wollte.
|
# dreissig PDF-Fenster offen). Geprueft wird der Pfad, den die Vorschau
|
||||||
|
# zurueckgibt - und dass wirklich NICHTS aufgemacht wurde.
|
||||||
geoeffnet = []
|
geoeffnet = []
|
||||||
A.os.startfile = lambda p, *a, **k: geoeffnet.append(p)
|
A.os.startfile = lambda p, *a, **k: geoeffnet.append(p)
|
||||||
|
|
||||||
|
|
@ -81,10 +82,10 @@ f.update()
|
||||||
nummer_vorher = f.r_nummer.get()
|
nummer_vorher = f.r_nummer.get()
|
||||||
zaehler_vorher = f.cfg.get("rechnung_zaehler")
|
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)})")
|
pruefe(bool(pfad), f"die Vorschau nennt ihr Blatt ({os.path.basename(str(pfad))})")
|
||||||
pfad = geoeffnet[0] if geoeffnet else ""
|
pruefe(not geoeffnet, f"im Pruflauf wird KEIN Betrachter aufgemacht ({geoeffnet})")
|
||||||
pruefe(os.path.exists(pfad), "Vorschau-PDF wurde geschrieben")
|
pruefe(os.path.exists(pfad), "Vorschau-PDF wurde geschrieben")
|
||||||
pruefe(os.path.abspath(ordner) not in os.path.abspath(pfad),
|
pruefe(os.path.abspath(ordner) not in os.path.abspath(pfad),
|
||||||
"Vorschau liegt NICHT im Rechnungsordner")
|
"Vorschau liegt NICHT im Rechnungsordner")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue