Merge branch 'treenode_editor' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into treenode_editor
This commit is contained in:
commit
df1ca9a266
1 changed files with 23 additions and 1 deletions
|
@ -103,8 +103,30 @@ class TNLData(object):
|
|||
outitem = cls.from_treenode(ch,out,idx)
|
||||
out.children.append(outitem)
|
||||
return out
|
||||
|
||||
@classmethod
|
||||
def filter_treenode(cls, treenode, predicate):
|
||||
tnll = cls._filter_treenode_recursive(treenode, predicate) # TreeNodeList List :-)
|
||||
# Teď vyrobíme virtuální TNL, který nemá obsah, ale má za potomky všecny nalezené TNLData
|
||||
result = cls(None)
|
||||
for idx, tnl in enumerate(tnll):
|
||||
result.children.append(tnl)
|
||||
tnl.parent = result
|
||||
tnl.index = idx
|
||||
return result
|
||||
|
||||
|
||||
@classmethod
|
||||
def _filter_treenode_recursive(cls, treenode, predicate):
|
||||
if predicate(treenode):
|
||||
return [cls.from_treenode(treenode)]
|
||||
else:
|
||||
found = []
|
||||
for tn in 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
|
||||
|
||||
class TreeNodeView(generic.DetailView):
|
||||
model = s.TreeNode
|
||||
|
|
Loading…
Reference in a new issue