Browse Source

Merge branch 'data_migrations' into test

middleware_test
Pavel "LEdoian" Turinsky 3 years ago
parent
commit
7770dbf134
  1. 1
      seminar/migrations/0051_resitel_to_osoba.py
  2. 10
      seminar/migrations/0052_user_to_organizator.py
  3. 18
      seminar/utils.py

1
seminar/migrations/0051_resitel_to_osoba.py

@ -25,6 +25,7 @@ def resitel_to_osoba(apps,schema_editor):
o.telefon = r.telefon
o.ulice = r.ulice
o.user = r.user
o.poznamka += f'\nWEB DEBUG: Osoba pro řešitele {r.id}'
if o.user:
u = o.user
if u.first_name:

10
seminar/migrations/0052_user_to_organizator.py

@ -23,10 +23,11 @@ def spoj_k_organizatorum_osoby(apps, scema_editor):
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)
osoba = Osoba()
osoba.poznamka += f'\nWEB DEBUG: BUG: Osoba pro Orga {org.id} bez Uživatele'
# Téhle osobě nejdou nastavit detaily, protože žádné nemáme.
# Datum registrace budiž minimální
osoba.datum_registrace = date.min
# Datum registrace budiž maximální
osoba.datum_registrace = date.max
else:
logger.info(f'Org {org.user.email}(ID: {org.id}) má uživatele {user}')
# 💢💢💢 Python nemá goto, ale prý má výjimky… 💢💢💢
@ -36,6 +37,7 @@ def spoj_k_organizatorum_osoby(apps, scema_editor):
resitele = Resitel.objects.filter(user=user)
if resitele.count() != 0 and user is not None:
osoba = resitele.first().osoba
osoba.poznamka += f'\nWEB DEBUG: Osoba pro Orga {org.id} spárovaná podle Uživatele Řešitele'
logger.info(f'Našel jsem řešitele {resitele.first().email} podle uživatele, používám jeho Osobu')
raise EndException
@ -45,12 +47,14 @@ def spoj_k_organizatorum_osoby(apps, scema_editor):
osoba = osoby.first()
if osoba.user is None:
osoba.user = user
osoba.poznamka += f'\nWEB DEBUG: Osoba pro Orga {org.id} spárovaná podle e-mailu'
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)
osoba.poznamka += f'\nWEB DEBUG: Osoba pro Orga {org.id} vytvořena nová jen podle existence Uživatele'
# Přesun informací z usera do osoby
# pro osoby z řešitelů (jediné dosud existující osoby) již v minule migraci

18
seminar/utils.py

@ -323,15 +323,15 @@ def deadline(datum):
datum = datum.date()
rok = datum.year
# Dva ročníky podezřelé z obsahování dat
pozdejsi_rocnik = m.Rocnik.objects.filter(prvni_rok=rok)
drivejsi_rocnik = m.Rocnik.objects.filter(prvni_rok=rok-1)
if any([
pozdejsi_rocnik.count() > 1,
drivejsi_rocnik.count() > 1,
]):
raise ValueError(f"Více ročníků začíná/končí stejným rokem: {rok}")
pozdejsi_rocnik = pozdejsi_rocnik.first() if pozdejsi_rocnik.count() > 0 else None
drivejsi_rocnik = drivejsi_rocnik.first() if drivejsi_rocnik.count() > 0 else None
try:
pozdejsi_rocnik = m.Rocnik.objects.get(prvni_rok=rok)
except m.Rocnik.DoesNotExist:
pozdejsi_rocnik = None
try:
drivejsi_rocnik = m.Rocnik.objects.get(prvni_rok=rok-1)
except m.Rocnik.DoesNotExist:
drivejsi_rocnik = None
if drivejsi_rocnik is not None:
# Předpokládáme, že neexistuje číslo, které má deadline ale nemá finální deadline.

Loading…
Cancel
Save