52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
# Sudreg lookup po klubu nazivu za one BEZ OIB
|
|
import psycopg2, time, hashlib, json, re
|
|
from psycopg2.extras import RealDictCursor
|
|
|
|
DSN = f"host=10.10.0.2 port=6432 dbname=rinet_v3 user=rinet password={os.environ['DB_PASSWORD']}"
|
|
|
|
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()
|