@ -360,33 +360,34 @@ class TextWebView(generic.DetailView):
return JsonResponse ( model_to_dict ( self . object , exclude = ' do_cisla ' ) )
return JsonResponse ( model_to_dict ( self . object , exclude = ' do_cisla ' ) )
class ProblemView ( generic . DetailView ) :
# FIXME: Pozor, níž je ještě jeden ProblemView!
model = s . Problem
#class ProblemView(generic.DetailView):
# Zkopírujeme template_name od TreeNodeView, protože jsme prakticky jen trošku upravený TreeNodeView
# model = s.Problem
template_name = TreeNodeView . template_name
# # 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 )
# def get_context_data(self, **kwargs):
user = self . request . user
# context = super().get_context_data(**kwargs)
# Teď potřebujeme doplnit tnldata do kontextu.
# user = self.request.user
# Ošklivý type switch, hezčí by bylo udělat to polymorfni. FIXME.
# # Teď potřebujeme doplnit tnldata do kontextu.
if False :
# # Ošklivý type switch, hezčí by bylo udělat to polymorfni. FIXME.
# Hezčí formátování zbytku :-P
# if False:
pass
# # Hezčí formátování zbytku :-P
elif isinstance ( self . object , s . Clanek ) or isinstance ( self . object , s . Konfera ) :
# pass
# Tyhle Problémy mají ŘešeníNode
# elif isinstance(self.object, s.Clanek) or isinstance(self.object, s.Konfera):
context [ ' tnldata ' ] = TNLData . from_treenode ( self . object . reseninode , user )
# # Tyhle Problémy mají ŘešeníNode
elif isinstance ( self . object , s . Uloha ) :
# context['tnldata'] = TNLData.from_treenode(self.object.reseninode,user)
# 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
# elif isinstance(self.object, s.Uloha):
tnl_zadani = TNLData . from_treenode ( self . object . ulohazadaninode , user )
# # 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_vzorak = TNLData . from_treenode ( self . object . ulohavzoraknode , user )
# tnl_zadani = TNLData.from_treenode(self.object.ulohazadaninode,user)
context [ ' tnldata ' ] = TNLData . from_tnldata_list ( [ tnl_zadani , tnl_vzorak ] )
# tnl_vzorak = TNLData.from_treenode(self.object.ulohavzoraknode,user)
elif isinstance ( self . object , s . Tema ) :
# context['tnldata'] = TNLData.from_tnldata_list([tnl_zadani, tnl_vzorak])
rocniknode = self . object . rocnik . rocniknode
# elif isinstance(self.object, s.Tema):
context [ ' tnldata ' ] = TNLData . filter_treenode ( rocniknode , lambda x : isinstance ( x , s . TemaVCisleNode ) )
# rocniknode = self.object.rocnik.rocniknode
else :
# context['tnldata'] = TNLData.filter_treenode(rocniknode, lambda x: isinstance(x, s.TemaVCisleNode))
raise ValueError ( " Obecný problém nejde zobrazit. " )
# else:
return context
# raise ValueError("Obecný problém nejde zobrazit.")
# return context
#class AktualniZadaniView(generic.TemplateView):
#class AktualniZadaniView(generic.TemplateView):
@ -681,29 +682,30 @@ class RocnikView(generic.DetailView):
return context
return context
class ProblemView ( generic . DetailView ) :
# FIXME: Pozor, výš je ještě jeden ProblemView!
model = Problem
#class ProblemView(generic.DetailView):
# model = Problem
# Používáme funkci, protože přímo template_name neumí mít v přiřazení dost logiky. Ledaže by se to udělalo polymorfně...
#
def get_template_names ( self , * * kwargs ) :
# # Používáme funkci, protože přímo template_name neumí mít v přiřazení dost logiky. Ledaže by se to udělalo polymorfně...
# FIXME: Switch podle typu není hezký, ale nechtělo se mi to přepisovat celé. Správně by se tohle mělo řešit polymorfismem.
# def get_template_names(self, **kwargs):
spravne_templaty = {
# # FIXME: Switch podle typu není hezký, ale nechtělo se mi to přepisovat celé. Správně by se tohle mělo řešit polymorfismem.
s . Uloha : " uloha " ,
# spravne_templaty = {
s . Tema : " tema " ,
# s.Uloha: "uloha",
s . Konfera : " konfera " ,
# s.Tema: "tema",
s . Clanek : " clanek " ,
# s.Konfera: "konfera",
}
# s.Clanek: "clanek",
context = super ( ) . get_context_data ( * * kwargs )
# }
return [ ' seminar/archiv/problem_ ' + spravne_templaty [ context [ ' object ' ] . __class__ ] + ' .html ' ]
# context = super().get_context_data(**kwargs)
# return ['seminar/archiv/problem_' + spravne_templaty[context['object'].__class__] + '.html']
def get_context_data ( self , * * kwargs ) :
#
context = super ( ) . get_context_data ( * * kwargs )
# def get_context_data(self, **kwargs):
# Musí se používat context['object'], protože nevíme, jestli dostaneme úložku, téma, článek, .... a tyhle věci vyrábějí různé klíče.
# context = super().get_context_data(**kwargs)
if not context [ ' object ' ] . verejne ( ) and not self . request . user . je_org :
# # Musí se používat context['object'], protože nevíme, jestli dostaneme úložku, téma, článek, .... a tyhle věci vyrábějí různé klíče.
raise PermissionDenied ( )
# if not context['object'].verejne() and not self.request.user.je_org:
if isinstance ( context [ ' object ' ] , Clanek ) :
# raise PermissionDenied()
context [ ' reseni ' ] = Reseni . objects . filter ( problem = context [ ' object ' ] ) . select_related ( ' resitel ' ) . order_by ( ' resitel__prijmeni ' )
# if isinstance(context['object'], Clanek):
return context
# context['reseni'] = Reseni.objects.filter(problem=context['object']).select_related('resitel').order_by('resitel__prijmeni')
# return context