Remove zapomenutá třída
This commit is contained in:
parent
e42faa4ce8
commit
1012f9b3c5
1 changed files with 0 additions and 138 deletions
|
@ -68,144 +68,6 @@ class ObalkovaniView(generic.ListView):
|
||||||
context['cislo'] = self.cislo
|
context['cislo'] = self.cislo
|
||||||
return context
|
return context
|
||||||
|
|
||||||
class TNLData(object):
|
|
||||||
def __init__(self,anode,parent=None, index=None):
|
|
||||||
self.node = anode
|
|
||||||
self.sernode = vr.TreeNodeSerializer(anode)
|
|
||||||
self.children = []
|
|
||||||
self.parent = parent
|
|
||||||
self.tema_in_path = False
|
|
||||||
self.index = index
|
|
||||||
|
|
||||||
if parent:
|
|
||||||
self.tema_in_path = parent.tema_in_path
|
|
||||||
if isinstance(anode, m.TemaVCisleNode):
|
|
||||||
self.tema_in_path = True
|
|
||||||
|
|
||||||
def add_edit_options(self):
|
|
||||||
self.deletable = tnltt.deletable(self)
|
|
||||||
self.editable_siblings = tnltt.editableSiblings(self)
|
|
||||||
self.editable_children = tnltt.editableChildren(self)
|
|
||||||
self.text_only_subtree = tnltt.textOnlySubtree(self)
|
|
||||||
self.can_podvesit_za = tnltt.canPodvesitZa(self)
|
|
||||||
self.can_podvesit_pred = tnltt.canPodvesitPred(self)
|
|
||||||
self.appendable_children = tnltt.appendableChildren(self)
|
|
||||||
print("appChld",self.appendable_children)
|
|
||||||
if self.parent:
|
|
||||||
self.appendable_siblings = tnltt.appendableChildren(self.parent)
|
|
||||||
else:
|
|
||||||
self.appendable_siblings = []
|
|
||||||
@classmethod
|
|
||||||
def public_above(cls, anode):
|
|
||||||
""" Returns output of verejne for closest Rocnik, Cislo or Problem above.
|
|
||||||
(All of them have method verejne.)"""
|
|
||||||
parent = anode # chceme začít už od konkrétního node včetně
|
|
||||||
while True:
|
|
||||||
rocnik = isinstance(parent, s.RocnikNode)
|
|
||||||
cislo = isinstance(parent, s.CisloNode)
|
|
||||||
uloha = (isinstance(parent, s.UlohaVzorakNode) or
|
|
||||||
isinstance(parent, s.UlohaZadaniNode))
|
|
||||||
tema = isinstance(parent, s.TemaVCisleNode)
|
|
||||||
|
|
||||||
if (rocnik or cislo or uloha or tema) or parent==None:
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
parent = treelib.get_parent(parent)
|
|
||||||
if rocnik:
|
|
||||||
return parent.rocnik.verejne()
|
|
||||||
elif cislo:
|
|
||||||
return parent.cislo.verejne()
|
|
||||||
elif uloha:
|
|
||||||
return parent.uloha.verejne()
|
|
||||||
elif tema:
|
|
||||||
return parent.tema.verejne()
|
|
||||||
elif None:
|
|
||||||
print("Existuje TreeNode, který není pod číslem, ročníkem, úlohou"
|
|
||||||
"ani tématem. {}".format(anode))
|
|
||||||
return False
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def all_public_children(cls, anode):
|
|
||||||
for ch in treelib.all_children(anode):
|
|
||||||
if TNLData.public_above(ch):
|
|
||||||
yield ch
|
|
||||||
else:
|
|
||||||
continue
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_treenode(cls, anode, user, parent=None, index=None):
|
|
||||||
if TNLData.public_above(anode) or user.has_perm('auth.org'):
|
|
||||||
out = cls(anode,parent,index)
|
|
||||||
else:
|
|
||||||
raise PermissionDenied()
|
|
||||||
|
|
||||||
if user.has_perm('auth.org'):
|
|
||||||
enum_children = enumerate(treelib.all_children(anode))
|
|
||||||
else:
|
|
||||||
enum_children = enumerate(TNLData.all_public_children(anode))
|
|
||||||
|
|
||||||
for (idx,ch) in enum_children:
|
|
||||||
outitem = cls.from_treenode(ch, user, out, idx)
|
|
||||||
out.children.append(outitem)
|
|
||||||
out.add_edit_options()
|
|
||||||
return out
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_tnldata_list(cls, tnllist):
|
|
||||||
"""Vyrobíme virtuální TNL, který nemá obsah, ale má za potomky všechna zadaná TNLData"""
|
|
||||||
result = cls(None)
|
|
||||||
for idx, tnl in enumerate(tnllist):
|
|
||||||
result.children.append(tnl)
|
|
||||||
tnl.parent = result
|
|
||||||
tnl.index = idx
|
|
||||||
result.add_edit_options()
|
|
||||||
return result
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def filter_treenode(cls, treenode, predicate):
|
|
||||||
tnll = cls._filter_treenode_recursive(treenode, predicate) # TreeNodeList List :-)
|
|
||||||
return TNLData.from_tnldata_list(tnll)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _filter_treenode_recursive(cls, treenode, predicate):
|
|
||||||
if predicate(treenode):
|
|
||||||
return [cls.from_treenode(treenode)]
|
|
||||||
else:
|
|
||||||
found = []
|
|
||||||
for tn in treelib.all_children(treenode):
|
|
||||||
result = cls.filter_treenode(tn, predicate)
|
|
||||||
# Result by v tuhle chvíli měl být seznam TNLDat odpovídající treenodům, jež matchnuly predikát.
|
|
||||||
for tnl in result:
|
|
||||||
found.append(tnl)
|
|
||||||
return found
|
|
||||||
|
|
||||||
def to_json(self):
|
|
||||||
#self.node = anode
|
|
||||||
#self.children = []
|
|
||||||
#self.parent = parent
|
|
||||||
#self.tema_in_path = False
|
|
||||||
#self.index = index
|
|
||||||
out = {}
|
|
||||||
out['node'] = self.sernode.data
|
|
||||||
out['children'] = [n.to_json() for n in self.children]
|
|
||||||
out['tema_in_path'] = self.tema_in_path
|
|
||||||
out['index'] = self.index
|
|
||||||
out['deletable'] = self.deletable
|
|
||||||
out['editable_siblings'] = self.editable_siblings
|
|
||||||
out['editable_children'] = self.editable_children
|
|
||||||
out['text_only_subtree'] = self.text_only_subtree
|
|
||||||
out['can_podvesit_za'] = self.can_podvesit_za
|
|
||||||
out['can_podvesit_pod'] = self.can_podvesit_pred
|
|
||||||
out['appendable_children'] = self.appendable_children
|
|
||||||
out['appendable_siblings'] = self.appendable_siblings
|
|
||||||
|
|
||||||
return out
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
return("TNL({})".format(self.node))
|
|
||||||
|
|
||||||
|
|
||||||
# FIXME: Pozor, níž je ještě jeden ProblemView!
|
# FIXME: Pozor, níž je ještě jeden ProblemView!
|
||||||
#class ProblemView(generic.DetailView):
|
#class ProblemView(generic.DetailView):
|
||||||
|
|
Loading…
Reference in a new issue