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():
|
||||
|
||||
# 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
|
||||
resitele = Resitel.objects.filter(user=user)
|
||||
if resitele.count() != 0:
|
||||
osoba = resitele.first().osoba
|
||||
else:
|
||||
if user is None:
|
||||
logger.error(f'Org {org} nemá uživatele!')
|
||||
# Je to podezřelé, ale prostě vyrobíme novou osobu.
|
||||
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
|
||||
# pro řešitele již v minule migraci
|
||||
|
@ -142,7 +168,10 @@ def fix_problem(apps, schema_editor):
|
|||
else:
|
||||
pr.autor = 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()
|
||||
|
||||
def fix_pohadka(apps, schema_editor):
|
||||
|
|
|
@ -4,6 +4,10 @@ from __future__ import unicode_literals
|
|||
|
||||
from django.db import migrations
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def spoj_k_organizatorum_osoby(apps, scema_editor):
|
||||
Organizator = apps.get_model('seminar', 'Organizator')
|
||||
Resitel = apps.get_model('seminar', 'Resitel')
|
||||
|
@ -11,12 +15,38 @@ def spoj_k_organizatorum_osoby(apps, scema_editor):
|
|||
for org in Organizator.objects.all():
|
||||
|
||||
# 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
|
||||
resitele = Resitel.objects.filter(user=user)
|
||||
if resitele.count() != 0:
|
||||
osoba = resitele.first().osoba
|
||||
else:
|
||||
if user is None:
|
||||
logger.error(f'Org {org} nemá uživatele!')
|
||||
# Je to podezřelé, ale prostě vyrobíme novou osobu.
|
||||
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
|
||||
# pro řešitele již v minule migraci
|
||||
|
@ -46,7 +76,10 @@ def fix_problem(apps, schema_editor):
|
|||
else:
|
||||
pr.autor = 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()
|
||||
|
||||
def fix_pohadka(apps, schema_editor):
|
||||
|
|
Loading…
Reference in a new issue