# -*- coding: utf-8 -*- # ============================================================================= # Nazev: promote_sipiq_submitted_v1.1.py # Verze: 1.1 # Datum: 2026-06-20 # Popis: Posune investigatory z KROK "6 - SIPIQ odeslan" na "7 - SIPIQ vyplneny" # AUTOMATICKY podle pritomnosti odpovedi v sipiq_responses # (investigator_oid == _id; pole je ObjectId). Predřadi radek do STATUS. # v1.0 melo napevno zadany seznam ID z Illuminator exportu (17JUN) -> TRASH. # Pouziti: python promote_sipiq_submitted_v1.1.py (dry-run) # python promote_sipiq_submitted_v1.1.py --apply # Pozn.: Povysuje JEN z KROK 6 (KROK 0/3.2 se SIPIQ odpovedi necha byt -> reportuje # jako upozorneni, rozhodne uzivatel). # ============================================================================= import sys from datetime import date from pymongo import MongoClient MONGO_URI = "mongodb://192.168.1.76:27017" MON = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] _t = date.today() DD = _t.strftime("%d") + MON[_t.month - 1] + _t.strftime("%Y") LINE = (f"{DD}: SIPIQ VYPLNENY — odpoved zaznamenana v sipiq_responses (import). KROK 7.") def main(): apply = "--apply" in sys.argv db = MongoClient(MONGO_URI)["feasibility"] col = db["investigators"] resp_oids = {r.get("investigator_oid") for r in db["sipiq_responses"].find({}, {"investigator_oid": 1})} to_promote = [] # KROK 6 se odpovedi anomalie = [] # ma odpoved, ale neni KROK 6 ani 7 for oid in resp_oids: d = col.find_one({"_id": oid}, {"prijmeni": 1, "jmeno": 1, "KROK": 1, "STATUS": 1}) if not d: continue krok = str(d.get("KROK", "") or "") label = f"{d.get('prijmeni')} {d.get('jmeno')}" if krok.startswith("6"): to_promote.append((d, label)) elif not krok.startswith("7"): anomalie.append((label, krok)) print(f"== K POVYSENI (KROK 6 -> 7): {len(to_promote)} ==") for d, label in sorted(to_promote, key=lambda x: x[1]): print(f" [{label}] {d.get('KROK')} -> 7 - SIPIQ vyplneny") if apply: new_status = LINE + "\n" + (d.get("STATUS", "") or "") col.update_one({"_id": d["_id"]}, {"$set": { "KROK": "7 - SIPIQ vyplneny", "STATUS": new_status}}) if anomalie: print(f"\n== UPOZORNENI: ma SIPIQ odpoved, ale NENI KROK 6 ani 7 (NEMENIM): {len(anomalie)} ==") for label, krok in sorted(anomalie): print(f" {label} [{krok}]") print(f"\n{'ZAPSANO' if apply else 'DRY-RUN'}: {len(to_promote)} povyseno" + ("" if apply else " (spust s --apply)")) if __name__ == "__main__": main()