from django . urls import reverse
from django . views . generic import FormView , ListView
from seminar . views import formularOKView
from . forms import SifrovackaForm , NapovedaForm
from . models import OdpovedUcastnika , SpravnaOdpoved , Napoveda , NapovezenoUcastnikovi
from personalni . models import Resitel
class SifrovackaView ( FormView ) :
template_name = ' sifrovacka/sifrovacka.html '
form_class = SifrovackaForm
def form_valid ( self , form ) :
instance = form . save ( commit = False )
resitel = Resitel . objects . get ( osoba__user = self . request . user )
instance . resitel = resitel
instance . save ( )
sifra = SpravnaOdpoved . objects . filter ( sifra = instance . sifra , odpoved__iexact = instance . odpoved . strip ( ) ) . first ( )
if sifra is None :
return formularOKView ( self . request , f ' <h1>Bohužel vám hvězdy nebyly nakloněny. Rozumějte <i>máte to blbě</i>.</h1> <p><a href= " { reverse ( " sifrovacka " ) } " >Zkusit znovu.</a></p><br><br><br> ' )
instance . uspech = True
instance . save ( )
return formularOKView ( self . request , f ' <h1> { sifra . skryty_text } </h1> <p><a href= " { reverse ( " sifrovacka " ) } " >Odevzdat další.</a></p><br><br><br> ' )
class SifrovackaListView ( ListView ) :
template_name = ' sifrovacka/odpovedi_list.html '
model = OdpovedUcastnika
class NapovedaView ( FormView ) :
template_name = ' sifrovacka/napoveda.html '
form_class = NapovedaForm
def form_valid ( self , form ) :
instance = form . save ( commit = False )
resitel = Resitel . objects . get ( osoba__user = self . request . user )
instance . resitel = resitel
if NapovezenoUcastnikovi . objects . filter ( resitel = resitel , sifra = instance . sifra ) . first ( ) is None :
instance . save ( )
napoveda = Napoveda . objects . filter ( sifra = instance . sifra ) . first ( )
return formularOKView ( self . request , f ' <h1>Nápověda k šifře číslo { instance . sifra } je:</h1><p> { napoveda . text } </p> <p><a href= " { reverse ( " sifrovacka " ) } " >Odevzdat řešení.</a></p><br><br><br> ' )
class NapovedaListView ( ListView ) :
template_name = ' sifrovacka/napovedy_list.html '
model = NapovezenoUcastnikovi
class PreskoceniView ( FormView ) :
template_name = ' sifrovacka/preskoceni.html '
form_class = SifrovackaForm
initial = { " odpoved " : " =======PŘESKOČENO======= " }
def form_valid ( self , form ) :
instance = form . save ( commit = False )
instance . odpoved = " =======PŘESKOČENO======= "
resitel = Resitel . objects . get ( osoba__user = self . request . user )
instance . resitel = resitel
instance . save ( )
sifra = SpravnaOdpoved . objects . filter ( sifra = instance . sifra ) . first ( ) # FIXME co když je více "správných" odpovědí?
return formularOKView ( self . request , f ' <h1> { sifra . skryty_text } </h1> <p><a href= " { reverse ( " sifrovacka " ) } " >Zpět na odevzdávátko.</a></p><br><br><br> ' )