Browse Source

Stejný fix i ve squashed migraci

middleware_test
Pavel "LEdoian" Turinsky 4 years ago
parent
commit
3324afcba4
  1. 39
      seminar/migrations/0001_squashed_0067_auto_20190814_0805.py

39
seminar/migrations/0001_squashed_0067_auto_20190814_0805.py

@ -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):

Loading…
Cancel
Save