64 lines
2.7 KiB
Python
64 lines
2.7 KiB
Python
# -*- 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()
|