Merge branch 'migrations_shuffle' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into migrations_shuffle
This commit is contained in:
commit
1f17ba99c6
1 changed files with 97 additions and 4 deletions
101
db_compare.py
101
db_compare.py
|
@ -62,6 +62,100 @@ def check_skola():
|
||||||
for o,n in res:
|
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'])
|
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():
|
def check_rocnik():
|
||||||
old_query = "SELECT * FROM seminar_rocniky ORDER BY id"
|
old_query = "SELECT * FROM seminar_rocniky ORDER BY id"
|
||||||
|
|
||||||
|
@ -160,11 +254,10 @@ def check_pohadka():
|
||||||
raise ValueError("Nesedi autori u pohadky")
|
raise ValueError("Nesedi autori u pohadky")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
check_skola()
|
check_skola()
|
||||||
|
check_resitel()
|
||||||
|
check_reseni()
|
||||||
|
check_organizator()
|
||||||
check_rocnik()
|
check_rocnik()
|
||||||
check_cislo()
|
check_cislo()
|
||||||
check_priloha_reseni()
|
check_priloha_reseni()
|
||||||
|
|
Loading…
Reference in a new issue