@ -11,7 +11,7 @@ from django.http import Http404,HttpResponseBadRequest,HttpResponseRedirect
from django . db . models import Q , Sum , Count
from django . db . models import Q , Sum , Count
from django . views . decorators . csrf import ensure_csrf_cookie
from django . views . decorators . csrf import ensure_csrf_cookie
from django . views . generic . edit import FormView , CreateView
from django . views . generic . edit import FormView , CreateView
from django . views . generic . base import TemplateView
from django . views . generic . base import TemplateView , RedirectView
from django . contrib . auth import authenticate , login , get_user_model , logout
from django . contrib . auth import authenticate , login , get_user_model , logout
from django . contrib . auth import views as auth_views
from django . contrib . auth import views as auth_views
from django . contrib . auth . models import User , Permission
from django . contrib . auth . models import User , Permission
@ -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 , ProfileEditFormPoMaturite
from seminar . forms import PrihlaskaForm , LoginForm , ProfileEditForm , PoMaturiteP rofileEditForm
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
@ -1026,7 +1026,20 @@ class ResitelView(LoginRequiredMixin,generic.DetailView):
class AddSolutionView ( LoginRequiredMixin , FormView ) :
class AddSolutionView ( LoginRequiredMixin , FormView ) :
template_name = ' seminar/org/vloz_reseni.html '
template_name = ' seminar/org/vloz_reseni.html '
form_class = f . VlozReseniForm
form_class = f . VlozReseniForm
success_url = ' / '
def form_valid ( self , form ) :
data = form . cleaned_data
nove_reseni = m . Reseni . objects . create (
cas_doruceni = data [ ' cas_doruceni ' ] ,
forma = data [ ' forma ' ] ,
poznamka = data [ ' poznamka ' ] ,
)
nove_reseni . resitele . add ( data [ ' resitel ' ] )
nove_reseni . problem . add ( data [ ' problem ' ] )
nove_reseni . save ( )
# Chtěl jsem, aby bylo vidět, že se to uložilo, tak přesměrovávám na profil.
return redirect ( reverse ( ' profil ' ) )
class NahrajReseniView ( LoginRequiredMixin , CreateView ) :
class NahrajReseniView ( LoginRequiredMixin , CreateView ) :
model = s . Reseni
model = s . Reseni
@ -1095,21 +1108,21 @@ def resitelEditView(request):
user_edit = osoba_edit . user
user_edit = osoba_edit . user
## Vytvoření slovníku, kterým předvyplním formulář
## Vytvoření slovníku, kterým předvyplním formulář
prefill_1 = model_to_dict ( user_edit )
prefill_1 = model_to_dict ( user_edit )
if resitel_edit and resitel_edit . rok_maturity > = date . today ( ) . year :
if resitel_edit :
prefill_2 = model_to_dict ( resitel_edit )
prefill_2 = model_to_dict ( resitel_edit )
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 :
if ' datum_narozeni ' in prefill_1 :
prefill_1 [ ' datum_narozeni ' ] = str ( prefill_1 [ ' datum_narozeni ' ] )
prefill_1 [ ' datum_narozeni ' ] = str ( prefill_1 [ ' datum_narozeni ' ] )
if resitel_edit and resitel_edit . rok_maturity < date . today ( ) . year :
if ' rok_maturity ' not in prefill_1 or prefill_1 [ ' rok_maturity ' ] < date . today ( ) . year :
form = ProfileEditFormPoMaturite ( initial = prefill_1 )
form = PoMaturiteP rofileEditForm ( 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 ' rok_maturity ' not in prefill_1 or prefill_1 [ ' rok_maturity ' ] < date . today ( ) . year :
form = ProfileEditFormPoMaturite ( request . POST )
form = PoMaturiteP rofileEditForm ( request . POST )
else :
else :
form = ProfileEditForm ( request . POST )
form = ProfileEditForm ( request . POST )
if form . is_valid ( ) :
if form . is_valid ( ) :
@ -1133,7 +1146,7 @@ def resitelEditView(request):
## Neznámá země
## Neznámá země
msg = " Unknown country {} " . format ( fcd [ ' stat_text ' ] )
msg = " Unknown country {} " . format ( fcd [ ' stat_text ' ] )
if resitel_edit and resitel_edit . rok_maturity > = date . today ( ) . year :
if resitel_edit :
## Změny v řešiteli
## Změny v řešiteli
resitel_edit . skola = fcd [ ' skola ' ]
resitel_edit . skola = fcd [ ' skola ' ]
resitel_edit . rok_maturity = fcd [ ' rok_maturity ' ]
resitel_edit . rok_maturity = fcd [ ' rok_maturity ' ]
@ -1149,7 +1162,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 , ' po_maturite ' : resitel_edit and resitel_edit . rok_maturity < date . today ( ) . year } )
return render ( request , ' seminar/profil/edit.html ' , { ' form ' : form } )
def prihlaskaView ( request ) :
def prihlaskaView ( request ) :
generic_logger = logging . getLogger ( ' seminar.prihlaska ' )
generic_logger = logging . getLogger ( ' seminar.prihlaska ' )
@ -1230,12 +1243,6 @@ class LoginView(auth_views.LoginView):
# Jen vezmeme vestavěný a dáme mu vhodný template a přesměrovací URL
# Jen vezmeme vestavěný a dáme mu vhodný template a přesměrovací URL
template_name = ' seminar/profil/login.html '
template_name = ' seminar/profil/login.html '
# Přesměrovací URL má být v kontextu:
def get_context_data ( self , * * kwargs ) :
ctx = super ( ) . get_context_data ( * * kwargs )
ctx [ ' next ' ] = reverse ( ' profil ' )
return ctx
class LogoutView ( auth_views . LogoutView ) :
class LogoutView ( auth_views . LogoutView ) :
# Jen vezmeme vestavěný a dáme mu vhodný template a přesměrovací URL
# Jen vezmeme vestavěný a dáme mu vhodný template a přesměrovací URL
template_name = ' seminar/profil/logout.html '
template_name = ' seminar/profil/logout.html '
@ -1327,3 +1334,11 @@ class JakResitView(generic.ListView):
def get_queryset ( self ) :
def get_queryset ( self ) :
return None
return None
class AktualniRocnikRedirectView ( RedirectView ) :
permanent = False
pattern_name = ' seminar_rocnik '
def get_redirect_url ( self , * args , * * kwargs ) :
aktualni_rocnik = m . Nastaveni . get_solo ( ) . aktualni_rocnik . rocnik
return super ( ) . get_redirect_url ( rocnik = aktualni_rocnik , * args , * * kwargs )