From 12bd97c7cfa494cca285c7ad4c6c84dec955a561 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Mon, 29 Jul 2013 13:31:18 +0000 Subject: [PATCH] Added convenience methods to the Document class to recursively retrieve all forward / reverse relationship of a kind or set of kinds. - Legacy-Id: 5912 --- ietf/doc/models.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index 47ae26d64..a9834f5e3 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -261,6 +261,26 @@ class Document(DocumentInfo): raise TypeError("Expected a string, tuple or list, received %s" % type(relationship)) return DocAlias.objects.filter(relateddocument__source=self, relateddocument__relationship__in=relationship) + def all_related_that(self, relationship, related=None): + if related is None: + related = [] + rel = self.related_that(relationship) + for doc in rel: + if not doc in related: + related += [ doc ] + related = doc.document.all_related_that(relationship, related) + return related + + def all_related_that_doc(self, relationship, related=None): + if related is None: + related = [] + rel = self.related_that_doc(relationship) + for alias in rel: + if not alias in related: + related += [ alias ] + related = alias.document.all_related_that_doc(relationship, related) + return related + def telechat_date(self, e=None): if not e: e = self.latest_event(TelechatDocEvent, type="scheduled_for_telechat")