@@ -337,8 +337,6 @@ def ancestors_raw(self, max_depth=20, **kwargs):
337
337
pass # Not implemented yet
338
338
339
339
NodeModel = self ._meta .model
340
- print (ancestors_clauses_1 )
341
- print (ancestors_clauses_2 )
342
340
raw_qs = NodeModel .objects .raw (
343
341
ANCESTORS_QUERY .format (
344
342
relationship_table = edge_model_table ,
@@ -348,7 +346,6 @@ def ancestors_raw(self, max_depth=20, **kwargs):
348
346
),
349
347
query_parameters ,
350
348
)
351
- print (query_parameters )
352
349
return raw_qs
353
350
354
351
def ancestors (self , ** kwargs ):
@@ -686,11 +683,16 @@ def is_sibling_of(self, target):
686
683
# ToDo: Implement
687
684
pass
688
685
689
- def get_node_depth (self ):
686
+ def node_depth (self ):
690
687
# Depth from furthest root
691
688
# ToDo: Implement
692
689
pass
693
690
691
+ def entire_graph (self ):
692
+ # Gets all nodes connected in any way to this node
693
+
694
+ pass
695
+
694
696
def descendants_tree (self ):
695
697
"""
696
698
Returns a tree-like structure with descendants
@@ -768,6 +770,14 @@ def circular_checker(parent, child):
768
770
769
771
770
772
class EdgeManager (models .Manager ):
773
+
774
+ def from_nodes_queryset (self , nodes_queryset ):
775
+ """Provided a queryset of nodes, returns all edges where a parent and child
776
+ node are within the queryset of nodes."""
777
+ return _filter_order (
778
+ self .model .objects , ["parent" , "child" ], nodes_queryset
779
+ )
780
+
771
781
def descendants (self , node , ** kwargs ):
772
782
"""
773
783
Returns a queryset of all edges descended from the given node
@@ -788,19 +798,13 @@ def clan(self, node, **kwargs):
788
798
"""
789
799
Returns a queryset of all edges for ancestors, self, and descendants
790
800
"""
791
- return _filter_order (
792
- self .model .objects , ["parent" , "child" ], node .clan (** kwargs )
793
- )
801
+ return self .from_nodes_queryset (node .clan (** kwargs ))
794
802
795
803
def path (self , start_node , end_node , ** kwargs ):
796
804
"""
797
805
Returns a queryset of all edges for the shortest path from start_node to end_node
798
806
"""
799
- return _filter_order (
800
- self .model .objects ,
801
- ["parent" , "child" ],
802
- start_node .path (end_node , ** kwargs ),
803
- )
807
+ return self .from_nodes_queryset (start_node .path (end_node , ** kwargs ))
804
808
805
809
def validate_route (self , edges , ** kwargs ):
806
810
"""
0 commit comments