@ -142,6 +142,33 @@ class TreeNodeView(generic.DetailView):
context [ ' tnldata ' ] = TNLData . from_treenode ( self . object )
return context
class ProblemView ( generic . DetailView ) :
model = s . Problem
# Zkopírujeme template_name od TreeNodeView, protože jsme prakticky jen trošku upravený TreeNodeView
template_name = TreeNodeView . template_name
def get_context_data ( self , * * kwargs ) :
context = super ( ) . get_context_data ( * * kwargs )
# Teď potřebujeme doplnit tnldata do kontextu.
# Ošklivý type switch, hezčí by bylo udělat to polymorfni. FIXME.
if False :
# Hezčí formátování zbytku :-P
pass
elif isinstance ( self . object , s . Clanek ) or isinstance ( self . object , s . Konfera ) :
# Tyhle Problémy mají ŘešeníNode
context [ ' tnldata ' ] = TNLData . from_treenode ( self . object . reseninode )
elif isinstance ( self . object , s . Uloha ) :
# FIXME: Teď vždycky zobrazujeme i vzorák! Možná by bylo hezčí/lepší mít to stejně jako pro Téma: procházet jen dosažitelné z Ročníku / čísla / whatever
tnl_zadani = self . object . ulohazadaninode
tnl_vzorak = self . object . ulohavzoraknode
context [ ' tnldata ' ] = TNLData . from_tnldata_list ( [ tnl_zadani , tnl_vzorak ] )
elif isinstance ( self . object , s . Tema ) :
rocniknode = self . object . rocnik . rocniknode
context [ ' tnldata ' ] = TNLData . filter_treenode ( rocniknode , lambda x : isinstance ( x , s . TemaVCisleNode ) )
else :
raise ValueError ( " Obecný problém nejde zobrazit. " )
return context
# TODO Co chceme vlastně zobrazovat na této stránce? Zatím je zde aktuální číslo, ale může tu být cokoli jiného...
class AktualniZadaniView ( TreeNodeView ) :
def get_object ( self ) :