#!/usr/bin/env python3 # Sudreg lookup po klubu nazivu za one BEZ OIB import psycopg2, time, hashlib, json, re from psycopg2.extras import RealDictCursor DSN = "host=10.10.0.2 port=6432 dbname=rinet_v3 user=rinet password=R1net2026!SecureDB#v7" def main(): conn = psycopg2.connect(DSN, cursor_factory=RealDictCursor) conn.autocommit = True cur = conn.cursor() # Klubovi bez OIB sa imenom dovoljnim za search cur.execute(""" SELECT id, naziv, grad FROM pgz_sport.klubovi WHERE (oib IS NULL OR length(oib) != 11) AND naziv IS NOT NULL AND length(naziv) > 8 ORDER BY id """) klubovi = cur.fetchall() print(f"Klubovi za Sudreg lookup: {len(klubovi)}") # Try fuzzy match s civic.sudreg_api_cache koji već imamo found = 0 for k in klubovi: # Drop common suffixes clean = re.sub(r'\b(klub|udruga|sportski|sportsko)\b', '', k['naziv'], flags=re.I).strip() if len(clean) < 5: continue # Try direct search civic.sudreg_api_cache cur.execute(""" SELECT data->>'oib' AS oib, data->>'tvrtka' AS tvrtka, data->>'naziv' AS naziv FROM civic.sudreg_api_cache WHERE (data->>'tvrtka' ILIKE %s OR data->>'naziv' ILIKE %s) AND data->>'oib' IS NOT NULL LIMIT 3 """, (f'%{clean[:30]}%', f'%{clean[:30]}%')) cands = cur.fetchall() if len(cands) == 1 and cands[0]['oib']: cur.execute("UPDATE pgz_sport.klubovi SET oib=%s WHERE id=%s AND oib IS NULL", (cands[0]['oib'], k['id'])) found += 1 if found % 20 == 0: print(f"Found: {found}") print(f"FINAL: {found} OIB-ova nadeno preko sudreg_api_cache") cur.close(); conn.close() if __name__ == "__main__": main()