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