diff --git a/db_compare.py b/db_compare.py index fee8af35..336bc72a 100644 --- a/db_compare.py +++ b/db_compare.py @@ -62,6 +62,100 @@ def check_skola(): for o,n in res: check_same(o,n,['id','aesop_id','izo','nazev','kratky_nazev','ulice','mesto','psc','stat','je_zs','je_ss','poznamka']) +def check_resitel(): + old_query = 'SELECT * FROM seminar_resitele ORDER BY id' + new_query = 'SELECT * FROM seminar_resitele JOIN seminar_osoby ON seminar_resitele.osoba_id = seminar_osoby.id ORDER BY seminar_resitele.id' + + old_res, new_res = execute_simple(old_query,new_query) + + res = zip(old_res,new_res) + + fields_osoba = [ + 'jmeno', + 'prijmeni', + 'user', + 'pohlavi_muz', + 'email', + 'telefon', + 'datum_narozeni', + 'datum_souhlasu_udaje', + 'datum_souhlasu_zasilani', + 'datum_prihlaseni', + 'ulice', + 'mesto', + 'psc', + 'stat', + ] + fields_keep = [ + 'id', + 'skola_id', + 'rok_maturity', + 'zasilat', + 'poznamka', + ] + fields_old = fields_keep+fields_osoba + fields_new = fields_keep + ['seminar_osoby.'+f for f in fields_osoba] + for o,n in res: + check_same(o,n,fields_old, fields_new) + +def check_reseni(): + old_query = 'SELECT * FROM seminar_reseni ORDER BY id' + new_query = 'SELECT * FROM seminar_reseni JOIN seminar_hodnoceni AS hodnoceni ON hodnoceni_id = hodnoceni.id ORDER BY id' + + same_fields = ['id', 'forma', 'poznamka'] + renamed_fields = [('timestamp', 'cas_doruceni'), + # Also moved fields + ('problem_id', 'hodnoceni.problem_id'), + ('body', 'hodnoceni.body'), + ('cislo_body_id', 'hodnoceni.cislo_body_id'), + ] + old_fields = same_fields + [f[0] for f in renamed_fields] + new_fields = same_fields + [f[1] for f in renamed_fields] + + old_res, new_res = execute_simple(old_query,new_query) + + res = zip(old_res,new_res) + + for o,n in res: + check_same(o,n,old_fields, new_fields) + + # Řešitelé jsou nově m2m, takže je musíme dohledat + old_query = 'SELECT id, resitel_id FROM seminar_reseni ORDER BY id' + new_query = 'SELECT reseni_id, resitel_id FROM seminar_reseni_resitele ORDER BY reseni_id' + + oldcur = oldconn.cursor() + old_results = oldcur.execute(old_query).fetchall() + newcur = newconn.cursor() + new_results = newcur.execute(old_query).fetchall() + + for oldr in old_results: + if oldr not in new_results: + raise ValueError(f'Pair {oldr} not found in new db.') + +def check_organizator(): + old_query = 'SELECT * FROM seminar_organizatori ORDER BY id' + new_query = 'SELECT * FROM seminar_organizatori JOIN seminar_osoby AS osoba ON osoba_id = osoba.id JOIN auth_user AS user ON osoba.user_id = user.id ORDER BY id' + + same_fields = ['studuje', 'strucny_popis_organizatora'] + renamed_fields = [ + ('user_id', 'user.id'), + ('prezdivka', 'osoba.prezdivka'), + ('foto', 'osoba.foto'), + ('foto_male', 'osoba.foto_male'), + ] + old_fields = same_fields + [f[0] for f in renamed_fields] + new_fields = same_fields + [f[1] for f in renamed_fields] + + old_res, new_res = execute_simple(old_query,new_query) + res = zip(old_res, new_res) + for o,n in res: + check_same(o,n,old_fields, new_fields) + # organizuje od, do: + if o.organizuje_od_roku != n.organizuje_od.year: + raise ValueError(f'Not matching organizuje_od for org id={o.id}: old {o.organizuje_od_roku}, new {n.organizuje_od}') + if o.organizuje_do_roku != n.organizuje_do.year: + raise ValueError(f'Not matching organizuje_do for org id={o.id}: old {o.organizuje_do_roku}, new {n.organizuje_do}') + def check_rocnik(): old_query = "SELECT * FROM seminar_rocniky ORDER BY id" @@ -160,11 +254,10 @@ def check_pohadka(): raise ValueError("Nesedi autori u pohadky") - - - - check_skola() +check_resitel() +check_reseni() +check_organizator() check_rocnik() check_cislo() check_priloha_reseni()