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: | ||||
| 		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() | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue