Skip to content

Commit 12bd97c

Browse files
committed
Added convenience methods to the Document class to recursively retrieve all forward / reverse relationship of a kind or set of kinds.
- Legacy-Id: 5912
1 parent 7a131cd commit 12bd97c

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

ietf/doc/models.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,26 @@ def related_that_doc(self, relationship):
261261
raise TypeError("Expected a string, tuple or list, received %s" % type(relationship))
262262
return DocAlias.objects.filter(relateddocument__source=self, relateddocument__relationship__in=relationship)
263263

264+
def all_related_that(self, relationship, related=None):
265+
if related is None:
266+
related = []
267+
rel = self.related_that(relationship)
268+
for doc in rel:
269+
if not doc in related:
270+
related += [ doc ]
271+
related = doc.document.all_related_that(relationship, related)
272+
return related
273+
274+
def all_related_that_doc(self, relationship, related=None):
275+
if related is None:
276+
related = []
277+
rel = self.related_that_doc(relationship)
278+
for alias in rel:
279+
if not alias in related:
280+
related += [ alias ]
281+
related = alias.document.all_related_that_doc(relationship, related)
282+
return related
283+
264284
def telechat_date(self, e=None):
265285
if not e:
266286
e = self.latest_event(TelechatDocEvent, type="scheduled_for_telechat")

0 commit comments

Comments
 (0)