Merge branch 'fix_dvojosoby_orgu' into data_migrations
This commit is contained in:
		
						commit
						b4ebe51b88
					
				
					 2 changed files with 72 additions and 10 deletions
				
			
		|  | @ -107,12 +107,38 @@ def spoj_k_organizatorum_osoby(apps, scema_editor): | ||||||
| 	for org in Organizator.objects.all(): | 	for org in Organizator.objects.all(): | ||||||
| 		 | 		 | ||||||
| 		# Spárování organizátora s osobou | 		# Spárování organizátora s osobou | ||||||
|  | 		# Myšlenka: Když najdeme řešitele pro daného uživatele, tak se vezme Osoba příslušná uživateli, | ||||||
|  | 		# Pokud nenajdeme uživatele, tak ještě zkusíme dohledat Osobu podle e-mailu | ||||||
| 		user = org.user | 		user = org.user | ||||||
| 		resitele = Resitel.objects.filter(user=user) | 		if user is None: | ||||||
| 		if resitele.count() != 0: | 			logger.error(f'Org {org} nemá uživatele!') | ||||||
| 			osoba = resitele.first().osoba | 			# Je to podezřelé, ale prostě vyrobíme novou osobu. | ||||||
| 		else: |  | ||||||
| 			osoba = Osoba(user=user) | 			osoba = Osoba(user=user) | ||||||
|  | 		else: | ||||||
|  | 			logger.info(f'Org {org.user.email}(ID: {org.id}) má uživatele {user}') | ||||||
|  | 			# 💢💢💢 Python nemá goto, ale prý má výjimky… 💢💢💢 | ||||||
|  | 			class EndException(Exception): pass | ||||||
|  | 			try: | ||||||
|  | 				# Hledáme podle uživatele | ||||||
|  | 				resitele = Resitel.objects.filter(user=user) | ||||||
|  | 				if resitele.count() != 0 and user is not None: | ||||||
|  | 					osoba = resitele.first().osoba | ||||||
|  | 					logger.info(f'Našel jsem řešitele {resitele.first().email} podle uživatele, používám jeho Osobu') | ||||||
|  | 					raise EndException | ||||||
|  | 				 | ||||||
|  | 				# Hledáme podle e-mailu | ||||||
|  | 				osoby = Osoba.objects.filter(email=user.email) | ||||||
|  | 				if osoby.count() != 0 and user.email != '': | ||||||
|  | 					osoba = osoby.first() | ||||||
|  | 					if osoba.user is None: | ||||||
|  | 						osoba.user = user | ||||||
|  | 					logger.info(f'Našel jsem Osobu {osoby.first().email} podle e-mailu') | ||||||
|  | 					raise EndException | ||||||
|  | 
 | ||||||
|  | 				# Fallback | ||||||
|  | 				logger.warning(f'Org neměl řešitele, zakládám novou Osobu.') | ||||||
|  | 				osoba = Osoba(user=user) | ||||||
|  | 			except EndException: pass | ||||||
| 
 | 
 | ||||||
| 			# Přesun informací z usera do osoby | 			# Přesun informací z usera do osoby | ||||||
| 			# pro řešitele již v minule migraci | 			# pro řešitele již v minule migraci | ||||||
|  | @ -142,7 +168,10 @@ def fix_problem(apps, schema_editor): | ||||||
| 		else: | 		else: | ||||||
| 			pr.autor = None | 			pr.autor = None | ||||||
| 		if pr.opravovatel is not None: | 		if pr.opravovatel is not None: | ||||||
| 			pr.opravovatele.add(Organizator.objects.filter(osoba__user=pr.opravovatel).first()) | 			if Organizator.objects.filter(osoba__user=pr.opravovatel).first() is not None: | ||||||
|  | 				pr.opravovatele.add(Organizator.objects.filter(osoba__user=pr.opravovatel).first()) | ||||||
|  | 			else: | ||||||
|  | 				logger.error(f'WTF, nespárovaný opravovatel {pr.opravovatel} problému {pr}') | ||||||
| 		pr.save() | 		pr.save() | ||||||
| 
 | 
 | ||||||
| def fix_pohadka(apps, schema_editor): | def fix_pohadka(apps, schema_editor): | ||||||
|  |  | ||||||
|  | @ -4,6 +4,10 @@ from __future__ import unicode_literals | ||||||
| 
 | 
 | ||||||
| from django.db import migrations | from django.db import migrations | ||||||
| 
 | 
 | ||||||
|  | import logging | ||||||
|  | 
 | ||||||
|  | logger = logging.getLogger(__name__) | ||||||
|  | 
 | ||||||
| def spoj_k_organizatorum_osoby(apps, scema_editor):	 | def spoj_k_organizatorum_osoby(apps, scema_editor):	 | ||||||
| 	Organizator = apps.get_model('seminar', 'Organizator') | 	Organizator = apps.get_model('seminar', 'Organizator') | ||||||
| 	Resitel = apps.get_model('seminar', 'Resitel') | 	Resitel = apps.get_model('seminar', 'Resitel') | ||||||
|  | @ -11,12 +15,38 @@ def spoj_k_organizatorum_osoby(apps, scema_editor): | ||||||
| 	for org in Organizator.objects.all(): | 	for org in Organizator.objects.all(): | ||||||
| 		 | 		 | ||||||
| 		# Spárování organizátora s osobou | 		# Spárování organizátora s osobou | ||||||
|  | 		# Myšlenka: Když najdeme řešitele pro daného uživatele, tak se vezme Osoba příslušná uživateli, | ||||||
|  | 		# Pokud nenajdeme uživatele, tak ještě zkusíme dohledat Osobu podle e-mailu | ||||||
| 		user = org.user | 		user = org.user | ||||||
| 		resitele = Resitel.objects.filter(user=user) | 		if user is None: | ||||||
| 		if resitele.count() != 0: | 			logger.error(f'Org {org} nemá uživatele!') | ||||||
| 			osoba = resitele.first().osoba | 			# Je to podezřelé, ale prostě vyrobíme novou osobu. | ||||||
| 		else: |  | ||||||
| 			osoba = Osoba(user=user) | 			osoba = Osoba(user=user) | ||||||
|  | 		else: | ||||||
|  | 			logger.info(f'Org {org.user.email}(ID: {org.id}) má uživatele {user}') | ||||||
|  | 			# 💢💢💢 Python nemá goto, ale prý má výjimky… 💢💢💢 | ||||||
|  | 			class EndException(Exception): pass | ||||||
|  | 			try: | ||||||
|  | 				# Hledáme podle uživatele | ||||||
|  | 				resitele = Resitel.objects.filter(user=user) | ||||||
|  | 				if resitele.count() != 0 and user is not None: | ||||||
|  | 					osoba = resitele.first().osoba | ||||||
|  | 					logger.info(f'Našel jsem řešitele {resitele.first().email} podle uživatele, používám jeho Osobu') | ||||||
|  | 					raise EndException | ||||||
|  | 				 | ||||||
|  | 				# Hledáme podle e-mailu | ||||||
|  | 				osoby = Osoba.objects.filter(email=user.email) | ||||||
|  | 				if osoby.count() != 0 and user.email != '': | ||||||
|  | 					osoba = osoby.first() | ||||||
|  | 					if osoba.user is None: | ||||||
|  | 						osoba.user = user | ||||||
|  | 					logger.info(f'Našel jsem Osobu {osoby.first().email} podle e-mailu') | ||||||
|  | 					raise EndException | ||||||
|  | 
 | ||||||
|  | 				# Fallback | ||||||
|  | 				logger.warning(f'Org neměl řešitele, zakládám novou Osobu.') | ||||||
|  | 				osoba = Osoba(user=user) | ||||||
|  | 			except EndException: pass | ||||||
| 
 | 
 | ||||||
| 			# Přesun informací z usera do osoby | 			# Přesun informací z usera do osoby | ||||||
| 			# pro řešitele již v minule migraci | 			# pro řešitele již v minule migraci | ||||||
|  | @ -46,7 +76,10 @@ def fix_problem(apps, schema_editor): | ||||||
| 		else: | 		else: | ||||||
| 			pr.autor = None | 			pr.autor = None | ||||||
| 		if pr.opravovatel is not None: | 		if pr.opravovatel is not None: | ||||||
| 			pr.opravovatele.add(Organizator.objects.filter(osoba__user=pr.opravovatel).first()) | 			if Organizator.objects.filter(osoba__user=pr.opravovatel).first() is not None: | ||||||
|  | 				pr.opravovatele.add(Organizator.objects.filter(osoba__user=pr.opravovatel).first()) | ||||||
|  | 			else: | ||||||
|  | 				logger.error(f'WTF, nespárovaný opravovatel {pr.opravovatel} problému {pr}') | ||||||
| 		pr.save() | 		pr.save() | ||||||
| 
 | 
 | ||||||
| def fix_pohadka(apps, schema_editor): | def fix_pohadka(apps, schema_editor): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Pavel "LEdoian" Turinsky
						Pavel "LEdoian" Turinsky