Browse Source

Merge branch 'data_migrations' into test

middleware_test
Pavel "LEdoian" Turinsky 4 years ago
parent
commit
a6928411fe
  1. 2
      seminar/forms.py
  2. 39
      seminar/migrations/0001_squashed_0067_auto_20190814_0805.py
  3. 2
      seminar/templates/seminar/profil/edit.html
  4. 11
      seminar/views/views_all.py

2
seminar/forms.py

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

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

2
seminar/templates/seminar/profil/edit.html

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

11
seminar/views/views_all.py

@ -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…
Cancel
Save