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