#!/usr/bin/env python3 import os import psycopg2 DB = dict(host='localhost', port=5432, dbname='rinet_v3', user='rinet', password=os.environ["DB_PASSWORD"]) conn = psycopg2.connect(**DB); conn.autocommit = True cu = conn.cursor() # Find Parasport savez ID (already exists) cu.execute("SELECT id FROM pgz_sport.savezi WHERE naziv ILIKE 'Parasportski savez%PG%' LIMIT 1") PARASPORT_ID = cu.fetchone()[0] print(f"Parasport savez ID: {PARASPORT_ID}") # Find which column name exists for address cu.execute("""SELECT column_name FROM information_schema.columns WHERE table_schema='pgz_sport' AND table_name='savezi'""") cols = [r[0] for r in cu.fetchall()] print(f"Savezi cols: {cols}") # Use 'adresa' or whatever exists addr_col = 'adresa' if 'adresa' in cols else ('sjediste' if 'sjediste' in cols else None) web_col = 'web' if 'web' in cols else 'web_stranica' email_col = 'email' if 'email' in cols else None set_parts = [] vals = [] if addr_col: set_parts.append(f'{addr_col} = COALESCE({addr_col}, %s)') vals.append('Šetalište Ivana Gorana Kovačića 14, 51000 Rijeka') if web_col in cols: set_parts.append(f'{web_col} = COALESCE({web_col}, %s)') vals.append('http://www.ssoi-pgz.hr') if email_col and email_col in cols: set_parts.append(f'{email_col} = COALESCE({email_col}, %s)') vals.append('ssoi-pgz@ssoi-pgz.hr') if set_parts: sql = f"UPDATE pgz_sport.savezi SET {', '.join(set_parts)} WHERE id = %s" vals.append(PARASPORT_ID) cu.execute(sql, vals) print(f"✓ Parasport kontakt updated: {addr_col}, {web_col}, {email_col}") # Predsjednik + tajnik u osobe_funkcije def upsert_funkcioner(ime, prezime, funkcija, savez_id): cu.execute("""SELECT id FROM pgz_sport.osobe_funkcije WHERE LOWER(ime)=LOWER(%s) AND LOWER(prezime)=LOWER(%s)""", (ime, prezime)) if not cu.fetchone(): cu.execute("""INSERT INTO pgz_sport.osobe_funkcije (ime, prezime, funkcija, savez_id) VALUES (%s,%s,%s,%s)""", (ime, prezime, funkcija, savez_id)) return True return False if upsert_funkcioner('Zvonimir', 'Brozić', 'predsjednik Parasportskog saveza PGŽ', PARASPORT_ID): print("+ Brozić") else: print("⊘ Brozić već postoji") if upsert_funkcioner('Luka', 'Dobrović', 'tajnik Parasportskog saveza PGŽ', PARASPORT_ID): print("+ Dobrović") else: print("⊘ Dobrović već postoji") # Insert 12+5 parasportskih klubova PARASPORT_KLUBOVI = [ ('Paraatletski klub "Srce" Rijeka', 'parasport-atletika', 'Rijeka', 'atletika invalidi'), ('Paraplivački klub "Forca"', 'parasport-plivanje', 'Rijeka', 'plivanje invalidi'), ('Parastolnoteniski klub Rijeka', 'parasport-stolni tenis','Rijeka', 'stolni tenis invalidi'), ('Parastreljački klub "Paraolimpijac"', 'parasport-streljaštvo', 'Rijeka', 'streljaštvo invalidi'), ('Sportski klub slijepih "Rijeka"', 'parasport-multisport', 'Rijeka', 'multisport za slijepe'), ('Parasportski boccia klub "Rijeka"', 'parasport-bocce', 'Rijeka', 'boćanje invalidi'), ('Klub dresurnog jahanja za osobe s invaliditetom "Pegaz"', 'parasport-jahanje', 'Rijeka', 'dresurno jahanje invalidi'), ('Parasportska udruga za rekreaciju "Rijeka"','parasport-rekrejacija', 'Rijeka', 'rekreacija invalidi'), ('KKOI Kostrena', 'parasport-multisport', 'Kostrena', 'KK osoba s invaliditetom Kostrena'), ('PAK "Rijeka"', 'parasport-multisport', 'Rijeka', 'parasport. udruga Rijeka'), ('Parasportski savez Grada Rijeke', 'parasport-multisport', 'Rijeka', 'gradski parasport savez'), ('Riječki sportski savez gluhih', 'parasport-gluhi', 'Rijeka', '5 klubova: Galeb x4 + DSR'), # 5 gluhih klubova preko RSS gluhih ('Streljački klub gluhih "Galeb"', 'parasport-gluhi-streljaštvo', 'Rijeka', 'pridruženi član preko Riječkog SS gluhih'), ('Malonogometni klub gluhih "Galeb"', 'parasport-gluhi-malonogomet', 'Rijeka', 'pridruženi član preko Riječkog SS gluhih'), ('Kuglački klub gluhih "Galeb"', 'parasport-gluhi-kuglanje', 'Rijeka', 'pridruženi član preko Riječkog SS gluhih'), ('Stolnoteniski klub gluhih "Galeb"', 'parasport-gluhi-stolni tenis','Rijeka', 'pridruženi član preko Riječkog SS gluhih'), ('Društvo sportske rekreacije gluhih "Galeb"','parasport-gluhi-rekrejacija','Rijeka', 'pridruženi član preko Riječkog SS gluhih'), ] inserted = 0; updated = 0 for naziv, sport_tag, grad, opis in PARASPORT_KLUBOVI: cu.execute("SELECT id, savez_id FROM pgz_sport.klubovi WHERE LOWER(naziv) = LOWER(%s) LIMIT 1", (naziv,)) row = cu.fetchone() if row: kid, old_savez = row cu.execute("""UPDATE pgz_sport.klubovi SET savez_id = %s, sport = %s, region = COALESCE(region, 'PGŽ'), grad = COALESCE(grad, %s), napomena = COALESCE(napomena, %s) WHERE id = %s""", (PARASPORT_ID, sport_tag, grad, opis, kid)) updated += 1 else: cu.execute("""INSERT INTO pgz_sport.klubovi (naziv, savez_id, sport, region, grad, napomena, aktivan) VALUES (%s, %s, %s, 'PGŽ', %s, %s, true)""", (naziv, PARASPORT_ID, sport_tag, grad, opis)) inserted += 1 print(f"Parasport klubovi: inserted={inserted}, updated={updated}") cu.execute("SELECT count(*) FROM pgz_sport.klubovi WHERE savez_id = %s", (PARASPORT_ID,)) print(f"Ukupno parasport klubova: {cu.fetchone()[0]}") cu.execute("""SELECT k.naziv, k.sport, k.grad FROM pgz_sport.klubovi k WHERE k.savez_id = %s ORDER BY k.naziv""", (PARASPORT_ID,)) print("\nLista parasport klubova:") for naziv, sport, grad in cu.fetchall(): print(f" • {naziv} ({sport}) — {grad}") conn.close() print("\n✓ Done")