Files
michaela.buzalkova c98001ae93 lenovo
2026-04-27 06:52:09 +02:00

98 lines
3.1 KiB
Python

"""
Orchestrační skript — stáhne nové zprávy ze všech pojišťoven po sobě.
Spouští 04_prihlaseni_a_stahuj_nove.py v každém adresáři pojišťovny.
Pokud jedna pojišťovna selže, pokračuje dál na další.
POUŽITÍ:
python stahuj_vse_pojistovny.py
"""
import subprocess
import sys
import os
from datetime import datetime
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", ".."))
from Knihovny.EmailMessagingGraph import send_mail
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
EMAIL_PRIJEMCE = "vladimir.buzalka@buzalka.cz"
POJISTOVNY = [
("111 VZP", "VZP"),
("205 ČPZP", "ČPZP"),
("207 OZP", "OZP"),
("209 ZPŠ", "ZPŠ"),
("211 ZPMVČR", "ZPMVČR"),
("213 RBP", "RBP"),
]
SKRIPT = "04_prihlaseni_a_stahuj_nove.py"
def main() -> None:
start = datetime.now()
print(f"=== Stahování zpráv ze všech pojišťoven ===")
print(f"Spuštěno: {start.strftime('%Y-%m-%d %H:%M:%S')}\n")
vysledky = []
for adresar, nazev in POJISTOVNY:
skript_path = os.path.join(BASE_DIR, adresar, SKRIPT)
if not os.path.exists(skript_path):
print(f"\n[{nazev}] PŘESKOČENO — skript nenalezen: {skript_path}")
vysledky.append((nazev, "přeskočeno"))
continue
print(f"\n{'='*50}")
print(f" {nazev}")
print(f"{'='*50}")
result = subprocess.run(
[sys.executable, skript_path],
cwd=os.path.join(BASE_DIR, adresar),
check=False,
)
if result.returncode == 0:
print(f"[{nazev}] OK")
vysledky.append((nazev, "OK"))
else:
print(f"[{nazev}] CHYBA (kód {result.returncode})")
vysledky.append((nazev, f"chyba (kód {result.returncode})"))
elapsed = datetime.now() - start
print(f"\n{'='*50}")
print(f"Hotovo za {int(elapsed.total_seconds())} s")
print(f"{'='*50}")
for nazev, stav in vysledky:
print(f" {nazev:<12} {stav}")
chyby = [n for n, s in vysledky if s != "OK" and s != "přeskočeno"]
ok = [n for n, s in vysledky if s == "OK"]
predmet = f"Pojišťovny {start.strftime('%d.%m.%Y')}"
predmet += "vše OK ✓" if not chyby else f"CHYBA: {', '.join(chyby)}"
radky = "".join(
f"<tr><td style='padding:4px 12px'>{n}</td>"
f"<td style='padding:4px 12px;color:{'green' if s == 'OK' else 'gray' if s == 'přeskočeno' else 'red'}'>"
f"{'' if s == 'OK' else s}</td></tr>"
for n, s in vysledky
)
body = (
f"<p>Stahování zpráv z pojišťoven dokončeno za {int(elapsed.total_seconds())} s.</p>"
f"<table border='0' cellspacing='0'>{radky}</table>"
f"<p style='color:gray;font-size:11px'>Spuštěno: {start.strftime('%Y-%m-%d %H:%M:%S')}</p>"
)
try:
send_mail(to=EMAIL_PRIJEMCE, subject=predmet, body=body, html=True)
print(f"\nEmail odeslán: {EMAIL_PRIJEMCE}")
except Exception as e:
print(f"\nEmail se nepodařilo odeslat: {e}")
if __name__ == "__main__":
main()