aboutsummaryrefslogtreecommitdiffstats
path: root/layerindex/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'layerindex/models.py')
-rw-r--r--layerindex/models.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/layerindex/models.py b/layerindex/models.py
index ac2967bb2c..af6db374c6 100644
--- a/layerindex/models.py
+++ b/layerindex/models.py
@@ -280,6 +280,24 @@ class LayerBranch(models.Model):
def get_recommends(self):
return self.dependencies_set.filter(required=False)
+ def get_recursive_dependencies(self, required=True, include_self=False):
+ deplist = []
+ def recurse_deps(layerbranch):
+ deplist.append(layerbranch)
+ if required:
+ dep_set = layerbranch.dependencies_set.filter(required=True)
+ else:
+ dep_set = layerbranch.dependencies_set.all()
+ for dep in dep_set:
+ deplayerbranch = dep.dependency.get_layerbranch(layerbranch.branch.name)
+ if deplayerbranch and deplayerbranch not in deplist:
+ recurse_deps(deplayerbranch)
+ recurse_deps(self)
+ if include_self:
+ return deplist
+ else:
+ return deplist[1:]
+
class LayerMaintainer(models.Model):
MAINTAINER_STATUS_CHOICES = (
('A', 'Active'),