Přidán ProblemView
This commit is contained in:
parent
6e79237cef
commit
aca63f4e5e
1 changed files with 28 additions and 1 deletions
|
@ -141,7 +141,34 @@ class TreeNodeView(generic.DetailView):
|
|||
context = super().get_context_data(**kwargs)
|
||||
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):
|
||||
|
|
Loading…
Reference in a new issue