File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -328,6 +328,34 @@ def leaves(self):
328
328
leaves .add (self )
329
329
return leaves
330
330
331
+ def descendants_edges (self ):
332
+ """
333
+ Returns a queryset of descendants edges
334
+
335
+ ToDo: Perform topological sort
336
+ """
337
+ return edge_model .objects .filter (
338
+ parent__in = self .self_and_descendants (),
339
+ child__in = self .self_and_descendants (),
340
+ )
341
+
342
+ def ancestors_edges (self ):
343
+ """
344
+ Returns a queryset of ancestors edges
345
+
346
+ ToDo: Perform topological sort
347
+ """
348
+ return edge_model .objects .filter (
349
+ parent__in = self .self_and_ancestors (),
350
+ child__in = self .self_and_ancestors (),
351
+ )
352
+
353
+ def clan_edges (self ):
354
+ """
355
+ Returns a queryset of all edges associated with a given node
356
+ """
357
+ return self .ancestors_edges () | self .descendants_edges ()
358
+
331
359
@staticmethod
332
360
def circular_checker (parent , child ):
333
361
if child in parent .self_and_ancestors ():
You can’t perform that action at this time.
0 commit comments