119 lines
5.8 KiB
Python
Executable File
119 lines
5.8 KiB
Python
Executable File
#!/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")
|