Merge branch 'data_migrations' into test
This commit is contained in:
commit
a6928411fe
4 changed files with 43 additions and 11 deletions
|
@ -143,7 +143,7 @@ class PrihlaskaForm(forms.Form):
|
||||||
self.add_error('skola_adresa',forms.ValidationError('Je nutné vyplnit adresu školy'))
|
self.add_error('skola_adresa',forms.ValidationError('Je nutné vyplnit adresu školy'))
|
||||||
|
|
||||||
# Editační formulář bez řešitele.
|
# Editační formulář bez řešitele.
|
||||||
class ProfileEditFormPoMat(forms.Form):
|
class ProfileEditFormPoMaturite(forms.Form):
|
||||||
username = forms.CharField(label='Přihlašovací jméno',
|
username = forms.CharField(label='Přihlašovací jméno',
|
||||||
max_length=256,
|
max_length=256,
|
||||||
required=True)
|
required=True)
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
{% include "seminar/profil/prihlaska_field.html" with field=form.stat_text id="id_li_stat_text"%}
|
{% include "seminar/profil/prihlaska_field.html" with field=form.stat_text id="id_li_stat_text"%}
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
{% if not PoMat %} {# Vysloužilým účastníkům skrýt editaci školy apod. #}
|
{% if not po_maturite %} {# Vysloužilým účastníkům skrýt editaci školy apod. #}
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h4>
|
<h4>
|
||||||
|
|
|
@ -26,7 +26,7 @@ import seminar.models as m
|
||||||
from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek, Osoba, Skola # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci
|
from seminar.models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek, Osoba, Skola # Tohle je stare a chceme se toho zbavit. Pouzivejte s.ToCoChci
|
||||||
#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva
|
#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva
|
||||||
from seminar import utils, treelib
|
from seminar import utils, treelib
|
||||||
from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm, ProfileEditFormPoMat
|
from seminar.forms import PrihlaskaForm, LoginForm, ProfileEditForm, ProfileEditFormPoMaturite
|
||||||
import seminar.forms as f
|
import seminar.forms as f
|
||||||
import seminar.templatetags.treenodes as tnltt
|
import seminar.templatetags.treenodes as tnltt
|
||||||
import seminar.views.views_rest as vr
|
import seminar.views.views_rest as vr
|
||||||
|
@ -1100,14 +1100,16 @@ def resitelEditView(request):
|
||||||
prefill_1.update(prefill_2)
|
prefill_1.update(prefill_2)
|
||||||
prefill_3=model_to_dict(osoba_edit)
|
prefill_3=model_to_dict(osoba_edit)
|
||||||
prefill_1.update(prefill_3)
|
prefill_1.update(prefill_3)
|
||||||
|
if 'datum_narozeni' in prefill_1:
|
||||||
|
prefill_1['datum_narozeni'] = str(prefill_1['datum_narozeni'])
|
||||||
if resitel_edit and resitel_edit.rok_maturity < date.today().year:
|
if resitel_edit and resitel_edit.rok_maturity < date.today().year:
|
||||||
form = ProfileEditFormPoMat(initial=prefill_1)
|
form = ProfileEditFormPoMaturite(initial=prefill_1)
|
||||||
else:
|
else:
|
||||||
form = ProfileEditForm(initial=prefill_1)
|
form = ProfileEditForm(initial=prefill_1)
|
||||||
## Změna údajů a jejich uložení
|
## Změna údajů a jejich uložení
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if resitel_edit and resitel_edit.rok_maturity < date.today().year:
|
if resitel_edit and resitel_edit.rok_maturity < date.today().year:
|
||||||
form = ProfileEditFormPoMat(request.POST)
|
form = ProfileEditFormPoMaturite(request.POST)
|
||||||
else:
|
else:
|
||||||
form = ProfileEditForm(request.POST)
|
form = ProfileEditForm(request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
|
@ -1121,6 +1123,7 @@ def resitelEditView(request):
|
||||||
osoba_edit.ulice = fcd['ulice']
|
osoba_edit.ulice = fcd['ulice']
|
||||||
osoba_edit.mesto = fcd['mesto']
|
osoba_edit.mesto = fcd['mesto']
|
||||||
osoba_edit.psc = fcd['psc']
|
osoba_edit.psc = fcd['psc']
|
||||||
|
osoba_edit.datum_narozeni = fcd['datum_narozeni']
|
||||||
## Změny v osobě s podmínkami
|
## Změny v osobě s podmínkami
|
||||||
if fcd.get('spam',False):
|
if fcd.get('spam',False):
|
||||||
osoba_edit.datum_souhlasu_zasilani = date.today()
|
osoba_edit.datum_souhlasu_zasilani = date.today()
|
||||||
|
@ -1146,7 +1149,7 @@ def resitelEditView(request):
|
||||||
return formularOKView(request)
|
return formularOKView(request)
|
||||||
else:
|
else:
|
||||||
## Stránka před odeslaním formuláře = předvyplněný formulář
|
## Stránka před odeslaním formuláře = předvyplněný formulář
|
||||||
return render(request, 'seminar/profil/edit.html', {'form': form, 'PoMat': resitel_edit and resitel_edit.rok_maturity < date.today().year})
|
return render(request, 'seminar/profil/edit.html', {'form': form, 'po_maturite': resitel_edit and resitel_edit.rok_maturity < date.today().year})
|
||||||
|
|
||||||
def prihlaskaView(request):
|
def prihlaskaView(request):
|
||||||
generic_logger = logging.getLogger('seminar.prihlaska')
|
generic_logger = logging.getLogger('seminar.prihlaska')
|
||||||
|
|
Loading…
Reference in a new issue